I have created a 2D 10x10 Array. using Numpy I want to iterate over the array as efficiently as possible.
However I would like to return the array values. essentially iterating over the 10x10 array 10 times and return a 1x10 array each time.
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)
the result is as follows:
0.5738994777717537
0.24988408410910767
0.8391827831682657
0.0015975845830569213
0.54477459840569
0.14091622639476165
-0.36517132895234106
-0.06311125453484467
-0.6572544506539948
...
100 times
However I would expect the result to be:
[0.5738994777717537,
0.24988408410910767,
0.8391827831682657,
0.0015975845830569213,
0.54477459840569,
0.14091622639476165,
-0.36517132895234106,
-0.06311125453484467,
-0.6572544506539948],[...]
...
10 times
Any help would be appreciated!
nditer
? What documentation are you working from? Why not justx.tolist()
? Orfor x in a: print(x)
?nditer
effectively flattens the array, providing each value without regard to therow/column
structure. That should be obvious from thenditer
documentation. Alsonditer
, at least when called from Python, is not a speed tool. It is not faster than simple iteration. – hpaulj Aug 19 at 18:18numpy
arrays. Focus on using the fast compiled whole-array methods, not iteration. – hpaulj Aug 19 at 18:26a[0], a[1]
etc. – pythonic833 Aug 19 at 18:46