On Wed, Jun 3, 2009 at 7:33 PM, Pierre GM <[email protected]> wrote:
>
> On Jun 3, 2009, at 7:23 PM, Robert Kern wrote:
>
>> On Wed, Jun 3, 2009 at 18:20, Pierre GM <[email protected]> wrote:
>>>
>>>
>>> Or, as all fields have the same dtype:
>>>
>>> >>> a_array.view(dtype=('f',len(a_array.dtype)))
>>> array([[ 0., 1., 2., 3., 4.],
>>> [ 1., 2., 3., 4., 5.]], dtype=float32)
>>>
>>> Ain't it fun ?
>>
>> Ah, yes, there is that niggle, too.
>
>
>
> Except that I always get bitten by that:
>
> >>> backandforth =
> a_array.view(dtype=('f',len(a_array.dtype))).view(a_array.dtype)
> >>> backandforth
> array([[(0.0, 1.0, 2.0, 3.0, 4.0)],
> [(1.0, 2.0, 3.0, 4.0, 5.0)]],
> dtype=[('a', '<f4'), ('b', '<f4'), ('c', '<f4'), ('d', '<f4'),
> ('e', '<f4')])
> >>> backandforth.shape
> (2,1)
>
> We gained a dimension !
>
I looked at the archives to my first discovery of views, for sorting
rows proposed by Pierre. In this case reshape was not necessary.
>>> np.sort(np.array([[4.0, 1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0,
>>> 5.0]]).view(dt),0).view(float)
array([[ 1., 2., 3., 4., 5.],
[ 4., 1., 2., 3., 4.]])
>>> dt
[('a', '<f8'), ('b', '<f8'), ('c', '<f8'), ('d', '<f8'), ('e', '<f8')]
looking closer, the extra dimension helps to maintain shape:
direct construction of structured array
>>> np.array([(0.0, 1.0, 2.0, 3.0, 4.0), (1.0, 2.0, 3.0, 4.0, 5.0)],dt)
array([(0.0, 1.0, 2.0, 3.0, 4.0), (1.0, 2.0, 3.0, 4.0, 5.0)],
dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8'), ('d', '<f8'),
('e', '<f8')])
>>> np.array([(0.0, 1.0, 2.0, 3.0, 4.0), (1.0, 2.0, 3.0, 4.0, 5.0)],dt).shape
(2,)
structured view on existing array is 2d
>>> np.array([(0.0, 1.0, 2.0, 3.0, 4.0), (1.0, 2.0, 3.0, 4.0,
>>> 5.0)]).view(dt).shape
(2, 1)
view on view returns original shape,
>>> np.array([(0.0, 1.0, 2.0, 3.0, 4.0), (1.0, 2.0, 3.0, 4.0,
>>> 5.0)]).view(dt).view(float).shape
(2, 5)
But sorting in between the two views also preserved original shape.
This was the source about my initial confusion about the necessity of
reshape.
Josef
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion