首页 > 解决方案 > Python迭代二维数组,返回数组值

问题描述

我创建了一个 2D 10x10 阵列。使用 Numpy 我想尽可能高效地迭代数组。

但是我想返回数组值。本质上迭代 10x10 数组 10 次,每次返回一个 1x10 数组。

 import datetime
 import numpy as np
 import random

 start = datetime.datetime.now()
 a = np.random.uniform(low=-1, high=1, size=(10,10))
 print("Time :",datetime.datetime.now() - start)

 for x in np.nditer(a):
    print(x)

结果如下:

0.5738994777717537
0.24988408410910767
0.8391827831682657
0.0015975845830569213
0.54477459840569
0.14091622639476165
-0.36517132895234106
-0.06311125453484467
-0.6572544506539948

...

100 times

但是我希望结果是:

[0.5738994777717537,
0.24988408410910767,
0.8391827831682657,
0.0015975845830569213,
0.54477459840569,
0.14091622639476165,
-0.36517132895234106,
-0.06311125453484467,
-0.6572544506539948],[...]

...

10 times

任何帮助,将不胜感激!

标签: arraysnumpyiteration

解决方案


要直接回答您的问题,这正是您想要的:

import numpy as np
a = np.random.uniform(low=-1, high=1, size=(10,10))
print(','.join([str(list(x)) for x in a]))

这将打印

[-0.2403881196886386, ... , 0.8518165986395723],[-0.2403881196886386, ... , 0.8518165986395723], ..., [-0.2403881196886386, ... , 0.8518165986395723]

您只打印数组元素的原因是由于工作方式nditernditer迭代单个元素,即使在多维级别,而您只想迭代数组的第一个维度。为此,for x in a:按预期工作。

编辑

如果您想了解如何nditer工作,这是一个很好的链接:https ://docs.scipy.org/doc/numpy/reference/arrays.nditer.html#arrays-nditer


推荐阅读