I am trying to use the nditer to traverse each column of a 2D array, returning 
the column as a 1D array. Consulting the docs, I found this example which works 
perfectly fine:

In [65]: a = np.arange(6).reshape(2,3)                                          
                                                                                
   

In [66]: for x in np.nditer(a, flags=['external_loop'], order='F'): 
    ...:     print(x, end=' ') 
    ...:                                                                        
                                                                                
   
[0 3] [1 4] [2 5] 

When changing the shape of the input array to (1, 3) however, this doesn’t 
yield what I am hoping for any more (essentially [0], [1] [2]):

In [68]: for x in np.nditer(a, flags=['external_loop'], order='F'): 
    ...:     print(x, end=' ') 
    ...:                                                                        
                                                                                
   
[0 1 2] 

I suspect this may have to do with the fact that the (1, 3) array is both C and 
F contiguous, and it is trying to return as large of a 1D F-contiguous array as 
it can. However, I didn’t see any way to really force it to go by columns. My 
best guess was the itershape argument though I couldn’t figure out how to get 
that to work and didn’t see much in the documentation.

Thanks in advance for the help!

- Will



_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to