我正在创建一个numpy数组,它将填充我所创建的特定类的对象.我想初始化数组,使它只包含该类的对象.例如,这是我想做的事情,如果我这样做会发生什么.
class Kernel:
pass
>>> L = np.empty(4,dtype=Kernel)
TypeError: data type not understood
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
>>> L = np.empty(4,dtype=object)
Run Code Online (Sandbox Code Playgroud)
然后将每个元素分配L
为一个Kernel
对象(或任何其他类型的对象).Kernel
但是,从编程的角度(类型检查)和数学的(对函数集的操作),我能够拥有一个s 数组是如此的巧妙.
有没有办法让我使用任意类指定numpy数组的数据类型?
dwf*_*dwf 22
如果您的Kernel类具有可预测数量的成员数据,那么您可以为其定义dtype而不是类.例如,如果它由9个浮点数和一个int参数化,你可以这样做
kerneldt = np.dtype([('myintname', np.int32), ('myfloats', np.float64, 9)])
arr = np.empty(dims, dtype=kerneldt)
Run Code Online (Sandbox Code Playgroud)
每次想要操作单个内核的方法时,你都必须做一些强制来将它们变成类内核的对象,但这是将实际数据存储在NumPy数组中的一种方法.如果您只想存储引用,那么在没有子类化ndarray的情况下,对象dtype是最好的.