我试图定义一个类型为numpy.ndarray
的属性的包装类。必须通过调用__init__()
来初始化该属性。
脚本按预期运行1D阵列。但是,在多维数组的情况下,python返回以下错误:only length-1 arrays can be converted to Python scalars
import numpy as np
class myArr(np.ndarray):
def __init__(self,Arr):
self.Arr = Arr
npArr = np.zeros((3)) # works
#npArr = np.zeros((3,5)) # does not work
print npArr
wrappedArr = myArr(npArr)
print wrappedArr.Arr
这里发生了什么?
python 2.7.6,numpy 1.8.2
答案 0 :(得分:1)
如果您只想拥有BOOL
类型的属性,您是否有任何特定原因继承它?
我会说通过继承ndarray
并覆盖ndarray
,你正在搞乱numpy的初始化过程,从而产生你所看到的错误。
有关详情,请参阅有关Subclassing ndarray的numpy文档。
继承__init__
(将object
转换为常规的新式类)可以解决您的问题:
MyArr