循环遍历numpy数组中的每个项目?

时间:2016-11-17 19:59:52

标签: numpy multidimensional-array

我试图访问numpy 2D数组中的每个项目。

我曾经在Python [[...],[...],[...]]中习惯这样的事情。

for row in data:
    for col in data:
       print(data[row][col])

但现在,我有data_array = np.array(features)

我如何以同样的方式迭代它?

3 个答案:

答案 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])