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.
Il suffit de parcourir la transposée de votre tableau:
for column in array.T:
some_function(column)
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]
for c in np.hsplit(array, array.shape[1]):
some_fun(c)
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.
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.])
Vous pouvez également utiliser unzip pour parcourir les colonnes.
for col in Zip(*array):
some_function(col)