2016-11-17 60 views
-1

我试图访问numpy 2D数组中的每个项目。循环遍历numpy数组中的每个项目?

我已经习惯了这样的事情在Python [...] [...] [...]]

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

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

如何以同样的方式遍历它?

+0

我们需要以帮助到更多细节。 –

+1

这是否包含在基本的numpy文档中? – hpaulj

+0

您可以用相同的方式遍历遍历它。试试看看!然而,迭代2D数组完全违背了使用numpy的点,即高效的数组操作。例如,阅读[本文档页面](https://docs.scipy.org/doc/numpy-1.10.1/user/whatisnumpy.html)。 – Praveen

回答

2

做一个小的二维数组和嵌套列表从中:

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] 

一般来说最好是不迭代与阵列工作循环。我给了这些迭代例子来澄清一些混淆。

-1

如果要访问numpy 2D数组要素中的项目,可以使用要素[row_index,column_index]。如果你想通过numpy的数组迭代,你可以只修改你的脚本

for row in data: 

    for col in data: 

     print(data[row, col]) 
+1

如果你像这样迭代,那么'row'是一个1d数组。你可以用它作为'data'的索引。第二次迭代也是一样的。你可能已经'排成一行了:'记住。 – hpaulj

+0

你需要的是'data.shape [0]'中的行和'data.shape [1]中的col',或者'用于数据中的行:用于col中的行:print(col)'。 – Praveen

+0

是的,我忘了修改for循环来使用像Praveen那样的行数和列数。 – shrubber

1

尝试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 
相关问题