0

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 ---
구마왕
  • 488
  • 6
  • 20

0 Answers0