que - recorrer matriz numpy
Looping a través de cada elemento en una matriz numpy? (3)
Haz una pequeña matriz 2D y una lista anidada de ella:
In [241]: A=np.arange(6).reshape(2,3)
In [242]: alist= A.tolist()
In [243]: alist
Out[243]: [[0, 1, 2], [3, 4, 5]]
Una forma de iterar en la lista:
In [244]: for row in alist:
...: for item in row:
...: print(item)
...:
0
1
2
3
4
5
funciona igual para la matriz
In [245]: for row in A:
...: for item in row:
...: print(item)
...:
0
1
2
3
4
5
Ahora ninguno de los dos es bueno si quieres modificar elementos. Pero para la iteración cruda sobre todos los elementos esto funciona.
Con la matriz que puedo tratar fácilmente era un 1d
In [246]: [i for i in A.flat]
Out[246]: [0, 1, 2, 3, 4, 5]
También podría iterar con índices anidados
In [247]: [A[i,j] for i in range(A.shape[0]) for j in range(A.shape[1])]
Out[247]: [0, 1, 2, 3, 4, 5]
En general, es mejor trabajar con matrices sin iteración. Doy estos ejemplos de iteración para aclarar algo de confusión.
Estoy tratando de acceder a cada elemento en una matriz numpy 2D.
Estoy acostumbrado a algo como esto en Python [[,], [...], [...]]
for row in data:
for col in data:
print(data[row][col])
pero ahora, tengo un data_array = np.array(features)
¿Cómo puedo iterar a través de él de la misma manera?
Si desea acceder a un elemento en las características numeradas de la matriz 2D, puede usar las características [row_index, column_index]. Si quisiera iterar a través de una matriz numpy, podría simplemente modificar su script para
for row in data:
for col in data:
print(data[row, col])
Pruebe np.ndenumerate
:
>>> a =numpy.array([[1,2],[3,4]])
>>> for (i,j), value in np.ndenumerate(a):
... print(i, j, value)
...
0 0 1
0 1 2
1 0 3
1 1 4