début avec numpy

Le
Sébastien Ramage
bonjour à tous,

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))

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


et pour le reste je suis un peu larguer
bref si qqn peut m'aider ça m'aiderai beaucoup
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jerome
Le #605011
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



Sébastien Ramage
Le #605010

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???



Elby
Le #605009
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



Sébastien Ramage
Le #604842
On 18 avr, 20:08, Elby

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




Jerome
Le #604665
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


Sébastien Ramage
Le #604662
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]])
Jerome
Le #604661
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)

Sébastien Ramage
Le #604660
t[:,:-1]

ou

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


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

merci beaucoup :)

Publicité
Poster une réponse
Anonyme