我试图访问numpy 2D数组中的每个项目。
我曾经在Python [[...],[...],[...]]中习惯这样的事情。
for row in data:
for col in data:
print(data[row][col])
但现在,我有data_array = np.array(features)
我如何以同样的方式迭代它?
答案 0 :(得分:4)
尝试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
答案 1 :(得分:2)
制作一个小的2d数组,并从中创建一个嵌套列表:
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]
通常,最好不使用迭代来处理数组。我给出了这些迭代示例以澄清一些混淆。
答案 2 :(得分:-1)
如果要访问numpy 2D数组功能中的项目,可以使用[row_index,column_index]功能。如果你想迭代一个numpy数组,你可以只修改你的脚本
for row in data:
for col in data:
print(data[row, col])