Python迭代2D数组,返回数组值

时间:2019-08-19 18:02:20

标签: arrays numpy iteration

我创建了一个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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

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

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]

仅打印数组元素的原因是由于nditer的工作方式。 nditer遍历单个元素,即使是在多维级别上,而您只想遍历数组的第一维。为此,for x in a:可以正常工作。

编辑

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