使用numpy.ndarray属性初始化类

时间:2015-08-27 07:11:32

标签: python class numpy multidimensional-array

我试图定义一个类型为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

1 个答案:

答案 0 :(得分:1)

如果您只想拥有BOOL类型的属性,您是否有任何特定原因继承它?

我会说通过继承ndarray并覆盖ndarray,你正在搞乱numpy的初始化过程,从而产生你所看到的错误。

有关详情,请参阅有关Subclassing ndarray的numpy文档。

继承__init__(将object转换为常规的新式类)可以解决您的问题:

MyArr