Hello, I have a test script: import numpy as np class MyArray(np.ndarray): __array_priority__ = 20 def __new__(cls): return np.asarray(1).view(cls).copy() def __repr__(self): return 'my_array' __str__ = __repr__ def __mul__(self, other): return super(MyArray, self).__mul__(other) def __rmul__(self, other): return super(MyArray, self).__rmul__(other) mine = MyArray() print type(np.array(mine,dtype='f')) The type returned by np.array is ndarray, unless I specifically set subok=True, in which case I get a MyArray. The default value of subok is True, so I dont understand why I have to specify subok unless I want it to be False. Is my subclass missing something important? Thanks, Darren
Darren,
The type returned by np.array is ndarray, unless I specifically set subok=True, in which case I get a MyArray. The default value of subok is True, so I dont understand why I have to specify subok unless I want it to be False. Is my subclass missing something important?
Blame the doc: the default for subok in array is False, as explicit in the _array_fromobject Cfunction (in multiarray). So no, you're not doing anything wrong. Note that by default subok=True for numpy.ma.array.
2009/1/22 Pierre GM <pgmdevlist@gmail.com>: Darren,
The type returned by np.array is ndarray, unless I specifically set subok=True, in which case I get a MyArray. The default value of subok is True, so I dont understand why I have to specify subok unless I want it to be False. Is my subclass missing something important?
Blame the doc: the default for subok in array is False, as explicit in the _array_fromobject Cfunction (in multiarray). So no, you're not doing anything wrong. Note that by default subok=True for numpy.ma.array.
Corrected in the doc-editor. Cheers, Scott
participants (3)
-
Darren Dale
-
Pierre GM
-
Scott Sinclair