[Numpy-discussion] reshaping array question

Neal Becker ndbecker2 at gmail.com
Tue Nov 17 13:49:21 EST 2015


Robert Kern wrote:

> On Tue, Nov 17, 2015 at 3:48 PM, Neal Becker <ndbecker2 at gmail.com> wrote:
>>
>> I have an array of shape
>> (7, 24, 2, 1024)
>>
>> I'd like an array of
>> (7, 24, 2048)
>>
>> such that the elements on the last dimension are interleaving the
>> elements from the 3rd dimension
>>
>> [0,0,0,0] -> [0,0,0]
>> [0,0,1,0] -> [0,0,1]
>> [0,0,0,1] -> [0,0,2]
>> [0,0,1,1] -> [0,0,3]
>> ...
>>
>> What might be the simplest way to do this?
> 
> np.transpose(A, (-2, -1)).reshape(A.shape[:-2] + (-1,))

I get an error on that 1st transpose:

here, 'A' is 'fftouts'

            print (fftouts.shape)
            print (np.transpose (fftouts, (-2,-1)).shape)

(4, 24, 2, 1024)  <<< fftouts.shape prints this
Traceback (most recent call last):
  File "test_uw2.py", line 194, in <module>
    run_line (sys.argv)
  File "test_uw2.py", line 190, in run_line
    run (opt)
  File "test_uw2.py", line 103, in run
    print (np.transpose (fftouts, (-2,-1)).shape)
  File "/home/nbecker/.local/lib/python2.7/site-
packages/numpy/core/fromnumeric.py", line 551, in transpose
    return transpose(axes)
ValueError: axes don't match array

> 
>> ------------
>> A different question, suppose I just want to stack them
>>
>> [0,0,0,0] -> [0,0,0]
>> [0,0,0,1] -> [0,0,1]
>> [0,0,0,2] -> [0,0,2]
>> ...
>> [0,0,1,0] -> [0,0,1024]
>> [0,0,1,1] -> [0,0,1025]
>> [0,0,1,2] -> [0,0,1026]
>> ...
> 
> A.reshape(A.shape[:-2] + (-1,))
> 
> --
> Robert Kern





More information about the NumPy-Discussion mailing list