我正在创建一个类my_class
,其唯一的实例变量是member
,这是一个任意尺寸(N, 2)
的维度为N
的numpy数组。该类应该表示实函数的向量空间。如果A.member
看起来像
[[a_1, x_1], [a_2, x_2], ..., [a_N, x_N]]
然后A
代表函数
f(x) = a_1 * k(x, x_1) + a_2* k(x, x_2) + ... + a_n * k(x, x_N)
其中k(x, y)
是预选功能。我想以常识的方式重载此类的加法,以便如果A.member
包含[a, x_0]
并且B.member
包含[b, x_0]
,则(A + B).member
包含{{ 1}}。如果[a + b, x_0]
不包含A.member
,并且[a, x_0]
不包含以B.member
为第二索引的对,则x_0
应该包含(A + B).member
。到目前为止,我已经实现了这样的添加:
[a, x_0]
我认为这太麻烦了,而且写得不太好。目前,我的代码也没有删除格式为def __add__(self, other):
a = np.intersect1d(self.member[:,1], other.member[:,1], True, True)
b = np.intersect1d(self.member[:,1], np.setdiff1d(self.member[:,1], a[0]),True, True)
c = np.intersect1d(other.member[:,1], np.setdiff1d(other.member[:,1], a[0]),True, True)
common = np.concatenate(((self.member[a[1],:][:,0] + other.member[a[2],:][:,0]).reshape(-1, 1), a[0].reshape(-1, 1)), 1)
return my_class(np.concatenate((common, self.member[b[1],:], other.member[c[1],:]), 0))
的条目,这会很好。有没有更好的方法来实现这一目标?如果可能的话,我想坚持使用numpy数组,而不要使用字典。