我正在创建一个 numpy 数组,该数组将填充我创建的特定类的对象。我想初始化数组,使其只包含该类的对象。例如,这是我想做的事情,以及如果我这样做会发生什么。
class Kernel:
pass
>>> L = np.empty(4,dtype=Kernel)
TypeError: data type not understood
我可以做这个:
>>> L = np.empty(4,dtype=object)
然后分配每个元素L
as a Kernel
对象(或任何其他类型的对象)。如果我能够拥有一系列,那就太好了Kernel
不过,从编程的角度(类型检查)和数学的角度(对函数集的操作)来看。
有什么方法可以让我使用任意类指定 numpy 数组的数据类型吗?
如果您的内核类具有可预测数量的成员数据,那么您可以为其定义数据类型而不是类。例如如果它由 9 个浮点数和一个 int 参数化,你可以这样做
kerneldt = np.dtype([('myintname', np.int32), ('myfloats', np.float64, 9)])
arr = np.empty(dims, dtype=kerneldt)
每次您想要操作单个内核的方法时,您都必须进行一些强制,将它们转换为 Kernel 类的对象,但这是将实际数据存储在 NumPy 数组中的一种方法。如果您只想存储引用,那么对象数据类型是最好的选择,无需子类化 ndarray。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)