[Numpy-discussion] Array subclassing - question for Travis
Stéfan van der Walt
stefan at sun.ac.za
Thu Aug 28 01:15:07 EDT 2008
Hey Matthew
2008/8/27 Matthew Brett <matthew.brett at gmail.com>:
> In [148]: type(np.multiply(arr, obj)) # this is what I expected
> Out[148]: <class '__main__.A'>
>
> In [149]: type(np.multiply.outer(arr, obj)) # this is not - I expected
> class A again
> Out[149]: <type 'numpy.ndarray'>
Since both those objects have an __array_priority__ of 0.0, I guess it
just takes whichever class comes first.
> In [151]: class A(np.ndarray): __array_priority__ = 20.0 # setting
> array priority does not affect behavior
>
> In [152]: obj = arr.copy().view(A)
>
> In [153]: type(np.multiply.outer(arr, obj))
> Out[153]: <type 'numpy.ndarray'>
You should set the number lower:
In [15]: class A(np.ndarray):
....: __array_priority__ = -1.0
....:
....:
In [16]: obj = arr.copy().view(A)
In [17]: np.multiply(obj, arr)
Out[17]: A([ 0, 1, 4, 9, 16])
In [18]: np.multiply(arr, obj)
Out[18]: A([ 0, 1, 4, 9, 16])
Cheers
Stéfan
More information about the NumPy-Discussion
mailing list