Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

début avec numpy

8 réponses
Avatar
Sébastien Ramage
bonjour =E0 tous,

je commence =E0 utiliser numpy et j'ai un peu de mal avec la
manipulation des array

ce que je voudrais faire c'est des op=E9rations de "base" sur des
tableaux 2D et 3D c'est =E0 dire:
- ajouter/supprimer une ligne
- passer d'un tableau 2D =E0 un tableau 3D et inversement (c'est =E0 dire
ajouter ou supprimer une colonne)

pour le moment j'ai cr=E9=E9 un tableau vide, =E7a pas de probl=E8me
tab =3D numpy.zeros((0,2))

ajouter des valeurs, l=E0 =E7a se complique pour le moment je fait =E7a
lg =3D len(tab)
tab =3D numpy.resize(tab,(lg+1,2)
tab[lg] =3D (1.2,36) #par exemple


et pour le reste je suis un peu larguer
bref si qqn peut m'aider =E7a m'aiderai beaucoup

8 réponses

Avatar
Jerome
Sébastien Ramage wrote:
bonjour à tous,


bonjour


je commence à utiliser numpy et j'ai un peu de mal avec la
manipulation des array

ce que je voudrais faire c'est des opérations de "base" sur des
tableaux 2D et 3D c'est à dire:
- ajouter/supprimer une ligne
- passer d'un tableau 2D à un tableau 3D et inversement (c'est à dire
ajouter ou supprimer une colonne)

pour le moment j'ai créé un tableau vide, ça pas de problème
tab = numpy.zeros((0,2))


qu'est-ce que tu appelles un tableau vide ?

Ca me semble bizarre de faire un tableau à 2 dimensions donc une qui est
nulle.

Je ferais plutôt tab = numpy.array([]) si c'est vraiment un de tes besoins.


ajouter des valeurs, là ça se complique pour le moment je fait ça
lg = len(tab)


la "taille" d'un tableau est accessible avec l'attribut shape des array

sh = tab.shape

elle renvoit un tuple avec les différentes dimensions. Parler de
lignes/colonnes est à mon avis le meilleur moyen de se tromper, surtout
si tu envisages de modifier la "shape" du tableau.

tab = numpy.resize(tab,(lg+1,2)
tab[lg] = (1.2,36) #par exemple


Si tu fais des choses comme
resize(tab, (1,2))
resize(tab, (2,2))
resize(tab, (3,2))

tu peux redimensionner tes tableaux suivant n'importe quelle dimension
sans problème. Numpy va remplir les nouvelles dimensions avec les
valeurs déjà présentes




et pour le reste je suis un peu larguer
bref si qqn peut m'aider ça m'aiderai beaucoup



Avatar
Sébastien Ramage

Si tu fais des choses comme
resize(tab, (1,2))
resize(tab, (2,2))
resize(tab, (3,2))

tu peux redimensionner tes tableaux suivant n'importe quelle dimension
sans problème. Numpy va remplir les nouvelles dimensions avec les
valeurs déjà présentes



jusque là je suis d'accord mais comment faire pour ajouter une
"colonne" c'est à dire pour avoir un shape de (3,3) en remplissant la
colonne avec des 0
exemple j'ai le tableau suivant
tab
array([[0, 1],



[2, 3],
[4, 5],
[6, 7],
[8, 9]])

si je fait :
resize(tab,(5,3))
array([[0, 1, 2],



[3, 4, 5],
[6, 7, 8],
[9, 0, 1],
[2, 3, 4]])

alors que moi je voudrais obtenir :
array([[0, 1, 0],
[2, 3 , 0],
[4, 5 , 0],
[6, 7, 0],
[8, 9, 0]])


si je fait :
resize(tab.transpose(),(3,5)).transpose()
array([[0, 1, 0],



[2, 3, 2],
[4, 5, 4],
[6, 7, 6],
[8, 9, 8]])

là je me rapproche de ce que je voudrais sauf que les valeurs ne sont
pas à 0

comment faire???



Avatar
Elby
comment faire???


le plus simple est d'utiliser c_[] ou r_[] pour combiner ton array avec un vecteur nul :

from numpy import *
tab = arange(10).reshape((5, -1))
tab
array([[0, 1],



[2, 3],
[4, 5],
[6, 7],
[8, 9]])
c_[tab, zeros(5)]
array([[ 0., 1., 0.],



[ 2., 3., 0.],
[ 4., 5., 0.],
[ 6., 7., 0.],
[ 8., 9., 0.]])

Je te conseille de bien regarder le didacticiel, personnellement, je
n'avais pas capté toute les astuces à la première lecture :
http://www.scipy.org/Tentative_NumPy_Tutorial

--
Elby



Avatar
Sébastien Ramage
On 18 avr, 20:08, Elby wrote:

comment faire???


le plus simple est d'utiliser c_[] ou r_[] pour combiner ton array avec u n vecteur nul :

from numpy import *
tab = arange(10).reshape((5, -1))
tab




array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])>>> c_[tab, zeros(5)]

array([[ 0., 1., 0.],
[ 2., 3., 0.],
[ 4., 5., 0.],
[ 6., 7., 0.],
[ 8., 9., 0.]])

Je te conseille de bien regarder le didacticiel, personnellement, je
n'avais pas capté toute les astuces à la première lecture :http://w ww.scipy.org/Tentative_NumPy_Tutorial

--
Elby


je vais relire le tutorial effectivement , c_[] et r_[] m'avait
échapper
merci pour l'astuce




Avatar
Jerome
fred wrote:

Bonsoir,

[snip]

Si tu fais des choses comme
resize(tab, (1,2))
resize(tab, (2,2))
resize(tab, (3,2))
Quelle différence avec reshape ?




reshape impose de conserver le même nombre d'éléments dans le tableau


Avatar
Sébastien Ramage
c_[] fait exactement
mais une nouvelle question maintenant :
comment faire le contraire? c'est à dire supprimer une ou plusieurs
colonne?

c'est à dire passer de :
array([[ 0., 1., 0.],
[ 2., 3., 0.],
[ 4., 5., 0.],
[ 6., 7., 0.],
[ 8., 9., 0.]])

à

array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
Avatar
Jerome
Sébastien Ramage wrote:
c_[] fait exactement
mais une nouvelle question maintenant :
comment faire le contraire? c'est à dire supprimer une ou plusieurs
colonne?

c'est à dire passer de :
array([[ 0., 1., 0.],
[ 2., 3., 0.],
[ 4., 5., 0.],
[ 6., 7., 0.],
[ 8., 9., 0.]])

à

array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])





t[:,:-1]

ou

take(t,(0,1),1)

Avatar
Sébastien Ramage
t[:,:-1]

ou

take(t,(0,1),1)


tout simplement...
je vais m'acheter un cerveau et je reviens

merci beaucoup :)