web-dev-qa-db-fra.com

Comment convertir ndarray en tableau?

J'utilise pandas.Series et np.ndarray.

Le code est comme ça

>>> t
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> pandas.Series(t)
Exception: Data must be 1-dimensional
>>>

Et j’ai essayé de le convertir en tableau à 1 dimension:

>>> tt = t.reshape((1,-1))
>>> tt
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

cela reste multi-dimensionnel puisqu'il y a double '['.

Alors, comment obtenir un ndarray vraiment converti en tableau?

Après avoir cherché, il est dit qu'ils sont identiques . Cependant, dans ma situation, ils ne travaillent pas de la même manière. 

16
SolessChong

Une alternative consiste à utiliser np.ravel :

>>> np.zeros((3,3)).ravel()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

L'importance de ravel par rapport à flatten est ravel copie uniquement les données si nécessaire et renvoie généralement une vue, alors que flatten renverra toujours une copie des données.

Pour utiliser reshape afin d’aplatir le tableau:

tt = t.reshape(-1)
23
Daniel

Utilisez .flatten :

>>> np.zeros((3,3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> _.flatten()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

EDIT: Comme indiqué, cela retourne une copie de l’entrée dans tous les cas. Pour éviter la copie, utilisez .ravel comme suggéré par @Ophion.

4
nneonneo
tt = array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

oneDvector = tt.A1

C’est la seule approche qui ait résolu le problème des doubles crochets, c’est-à-dire la conversion en tableau 1D et matrice.

1
Jemshid KK