如果我考虑以下简单类:
class Quantity(object):
def __init__(self, value, unit):
self.unit = unit
self.value = value
def __getitem__(self, key):
return Quantity(self.value[key], unit=self.unit)
def __len__(self):
return len(self.value)
并创建一个实例:
import numpy as np
q = Quantity(np.array([1,2,3]), 'degree')
print(repr(np.array(q)))
然后,如果我将此对象传递给 Numpy,它将将该对象拆分为一个包含 3 个Quantity
实例的对象数组:
array([<__main__.Quantity object at 0x1073a0d50>,
<__main__.Quantity object at 0x1073a0d90>,
<__main__.Quantity object at 0x1073a0dd0>], dtype=object)
这是由于存在__len__
and__getitem__
方法 - 如果我删除其中任何一个,则对象不会被拆分:
array(<__main__.Quantity object at 0x110a4e610>, dtype=object)
我还想保留__len__
and __getitem__
,但是有没有办法防止 Numpy 拆分对象?
编辑:我对制作ndarray 子类以外的解决方案感兴趣Quantity