我创建了一个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
任何帮助将不胜感激!
答案 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