Re: [Numpy-discussion] reshaping array question

2015-11-17 Thread Robert Kern
On Nov 17, 2015 6:53 PM, "Sebastian Berg" 
wrote:
>
> On Di, 2015-11-17 at 13:49 -0500, Neal Becker wrote:
> > Robert Kern wrote:
> >
> > > On Tue, Nov 17, 2015 at 3:48 PM, Neal Becker 
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:
> >
>
> Transpose needs a slightly different input. If you look at the help, it
> should be clear. The help might also point to np.swapaxes, which may be
> a bit more straight forward for this exact case.

Sorry about that. Was in a rush and working from a faulty memory.
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] reshaping array question

2015-11-17 Thread Sebastian Berg
On Di, 2015-11-17 at 13:49 -0500, Neal Becker wrote:
> Robert Kern wrote:
> 
> > On Tue, Nov 17, 2015 at 3:48 PM, Neal Becker  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:
> 

Transpose needs a slightly different input. If you look at the help, it
should be clear. The help might also point to np.swapaxes, which may be
a bit more straight forward for this exact case.

> 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 
> 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
> 
> 
> ___
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
> 



signature.asc
Description: This is a digitally signed message part
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] reshaping array question

2015-11-17 Thread Neal Becker
Robert Kern wrote:

> On Tue, Nov 17, 2015 at 3:48 PM, Neal Becker  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 
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


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


Re: [Numpy-discussion] reshaping array question

2015-11-17 Thread Sebastian Berg
On Di, 2015-11-17 at 10:48 -0500, Neal Becker 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
> 

Which basically means you want to reshape with the earlier index varying
faster. This is fortran order (in the simplest case for two axes being
reshaped). So you can do:

arr.reshape((7, 24, -1), order="F")

otherwise, if order seems too confusing or dangerous. Just transpose the
two axes first:

arr_r = arr.transpose((0, 1, 3, 2))
arr_r = arr_r.reshape((7, 24, -1))

- Sebastian

> [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?
> 
> 
> 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]
> ...
> 
> 
> 
> ___
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
> 



signature.asc
Description: This is a digitally signed message part
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] reshaping array question

2015-11-17 Thread Robert Kern
On Tue, Nov 17, 2015 at 3:48 PM, Neal Becker  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,))

> 
> 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
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion


[Numpy-discussion] reshaping array question

2015-11-17 Thread Neal Becker
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?


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]
...



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