web-dev-qa-db-fra.com

Numpy comment parcourir les colonnes d'un tableau?

Supposons que j'ai et m x n tableau. Je veux passer chaque colonne de ce tableau à une fonction pour effectuer une opération sur la colonne entière. Comment puis-je parcourir les colonnes du tableau?

Par exemple, j'ai un tableau 4 x 3 comme

1  99 2
2  14 5
3  12 7
4  43 1

for column in array:
  some_function(column)

où colonne serait "1,2,3,4" à la première itération, "99,14,12,43" à la deuxième et "2,5,7,1" à la troisième.

86
User

Il suffit de parcourir la transposée de votre tableau:

for column in array.T:
   some_function(column)
174
tillsten

Cela devrait vous donner un début

>>> for col in range(arr.shape[1]):
    some_function(arr[:,col])


[1 2 3 4]
[99 14 12 43]
[2 5 7 1]
12
Abhijit
for c in np.hsplit(array, array.shape[1]):
    some_fun(c)
4
user3061373

Pour un tableau en trois dimensions, vous pouvez essayer:

for c in array.transpose(1, 0, 2):
    do_stuff(c)

Voir la documentation sur la façon dont array.transpose fonctionne. Fondamentalement, vous spécifiez la dimension à déplacer. Dans ce cas, nous déplaçons la deuxième dimension (par exemple, des colonnes) vers la première.

3
stevej

Par exemple, vous voulez trouver une moyenne de chaque colonne dans la matrice. Créons la matrice suivante

mat2 = np.array([1,5,6,7,3,0,3,5,9,10,8,0], dtype=np.float64).reshape(3, 4)

La fonction pour la moyenne est

def my_mean(x):
    return sum(x)/len(x)

Faire ce qui est nécessaire et stocker le résultat dans le "résultat" du vecteur colon

results = np.zeros(4)
for i in range(0, 4):
    mat2[:, i] = my_mean(mat2[:, i])

results = mat2[1,:]      

Les résultats sont les suivants: array ([4.33333333, 5., 5.66666667, 4.])

0
Lucy Nowacki

Vous pouvez également utiliser unzip pour parcourir les colonnes.

for col in Zip(*array):
   some_function(col)
0
Adi