I want to iterate certain axis inside of matrix using numpy function (specific vector).
Suppose that, We have matrix A that is A.shape(2,3,4)
[[[1,2,3,4],[5,7,8,9],[1,2,3,4]],[[5,7,8,9],[1,2,3,4],[5,7,8,9]]]
For instance, If I want to iterate only axis =2 Iteration = 6
[1,2,3,4]
[5,7,8,9]
[1,2,3,4]
[5,7,8,9]
[1,2,3,4]
[5,7,8,9]
What is the fastest way to do that?
I try to use numpy.nditer
but I totally stuck.
I think it is sure that use the “external_loop” parameter but still don't know what to do.
A_list= np.random.randn(400,400,3)
start_time = time.time()
sum = 0
for i in range(0,400):
for j in range(0, 400):
sum += A_list[i][j]
print sum
print("--- %s seconds ---" % (time.time() - start_time))
sum = 0
start_time = time.time()
for x in A_list.reshape(-1,A_list.shape[-1]):
sum += x
print sum
print("--- %s seconds ---" % (time.time() - start_time))
sum = 0
start_time = time.time()
for x in np.vstack(A_list):
sum += x
print sum
print("--- %s seconds ---" % (time.time() - start_time))
result :
[-196.06613179 643.99881703 264.0386004 ]
--- 0.186000108719 seconds ---
[-196.06613179 643.99881703 264.0386004 ]
--- 0.134000062943 seconds ---
[-196.06613179 643.99881703 264.0386004 ]
--- 0.128999948502 seconds ---