我正试图书写一个包含NumPynp.ndarray
中某些数据的3级的Salph。 然而,我希望我的班子也包含一个关于如何解释数据价值的信息。
例如,请在<代码>ndarray上的<>dcode>>>上加入np.float32
,但还有一项“color修改这些浮动点值的含义。 因此,如果我想增加red number and a blue number,我必须首先将两个数字改为magenta,以便在法律上添加其基础_data
阵列。 添加的结果将包含_color = “magenta”
。
这只是一例。 在现实中,“col”并不是一种扼杀(最好把它看作是一种 in),结果的“col”是由两个投入的“col”在数学上确定的,任何两个“col”之间的转换在数学上都有界定。
class MyClass:
def __init__(self, data : np.ndarray, color : str):
self._data = data
self._color = color
# Example: Adding red numbers and blue numbers produces magenta numbers
def convert(self, other_color):
if self._color == "red" and other_color == "blue":
return MyClass(10*self._data, "magenta")
elif self._color == "blue" and other_color == "red":
return MyClass(self._data/10, "magenta")
def __add__(self, other):
if other._color == self._color:
# If the colors match, then just add the data values
return MyClass(self._data + other._data, self._color)
else:
# If the colors don t match, then convert to the output color before adding
new_self = self.convert(other._color)
new_other = other.convert(self._color)
return new_self + new_other
我的问题是,<代码>_color 信息生命alongside。
- If I define
__getitem__
to returnself._data[i]
, then the_color
information is lost. - If I define
__getitem__
to returnMyClass(self._data[i], self._color)
then I m creating a new object that contains a scalar number. This will cause plenty of problems (for example, I can legally indexthat_object[i]
, leading to certain error. - If I define
__getitem__
to returnMyClass(self._data[i:i+1], self._color)
then I m indexing an array to get an array, which leads to plenty of other problems. For example,my_object[i] = my_object[i]
looks sensible, but would throw an error.
然后,我开始认为,我真正想要的是不同的“栏目”。 这样,指数值就会有“栏目”信息在<条码>d 类型代码>上免费编码,但我不知道如何执行。
“col”的理论总数可能大约为10万。 然而,在任何单一文字执行中,使用率不到100。 因此,我认为可能维持一个名单/字典/字典? 在旧的“col子”中,以及它们如何规划有活力的产阶级......但灰色则倾向于以我不期望的方式冷静地改变类型,因此可能不是一条正确的道路。
All I know is that I don t want to store the "color" alongside every data value. The data arrays can be ~billions of entries, with one "color" for all entries.
我怎么能够追踪这种“col子”信息,同时还要有一个可以使用的类别?