[Numpy-discussion] dtype subarray comparison

Pauli Virtanen pav at iki.fi
Thu Oct 21 16:06:59 EDT 2010


Thu, 21 Oct 2010 12:50:11 -0700, Mark Wiebe wrote:
[clip]
> >>> import numpy as np
> >>> from numpy.core.multiarray import memorysimpleview as memoryview 
> >>> obj = np.array(([[1, 2], [3, 4]],), dtype=[('a', '<i8', (2, 2))])
> >>> x = memoryview(obj)
> >>> y = np.asarray(x)
> >>> obj == y
> False
> 
> >>> y['a'].shape
> (1, 2, 2)
> >>> obj['a'].shape
> (2, 2)
> 
> This happens because y.shape is (1,) and obj.shape is (), then the
> dtype's (2,2) shape is being appended to both when extracting the field
> 'a'.

Nice catch!

It seems that `_void_compare` *must* handle broadcasting itself -- I 
thought this was done by the caller, but apparently not. So you're right 
that the correct place to do the shape check is on the dtype level.

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list