循环遍历numpy数组中的每个项目?
问题描述:
我试图访问numpy 2D数组中的每个项目。循环遍历numpy数组中的每个项目?
我已经习惯了这样的事情在Python [...] [...] [...]]
for row in data:
for col in data:
print(data[row][col])
,但现在,我有一个data_array = np.array(features)
如何以同样的方式遍历它?
答
做一个小的二维数组和嵌套列表从中:
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]]
一个迭代的方式清单:
In [244]: for row in alist:
...: for item in row:
...: print(item)
...:
0
1
2
3
4
5
作品只是同为阵列
In [245]: for row in A:
...: for item in row:
...: print(item)
...:
0
1
2
3
4
5
如果你想修改元素,现在都不是很好。但是对于所有这些元素的粗略迭代。
数组我可以很容易地把它同是一个1D
In [246]: [i for i in A.flat]
Out[246]: [0, 1, 2, 3, 4, 5]
我还可以嵌套指数
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]
一般来说最好是不迭代与阵列工作循环。我给了这些迭代例子来澄清一些混淆。
答
如果要访问numpy 2D数组要素中的项目,可以使用要素[row_index,column_index]。如果你想通过numpy的数组迭代,你可以只修改你的脚本
for row in data:
for col in data:
print(data[row, col])
答
尝试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
我们需要以帮助到更多细节。 –
这是否包含在基本的numpy文档中? – hpaulj
您可以用相同的方式遍历遍历它。试试看看!然而,迭代2D数组完全违背了使用numpy的点,即高效的数组操作。例如,阅读[本文档页面](https://docs.scipy.org/doc/numpy-1.10.1/user/whatisnumpy.html)。 – Praveen