我想实现以下目标:
如何做到这一点?我正在使用numpy矩阵,如果它有任何区别。
我知道我可以使用矩阵[var1 [0],var1 [1],var2],但如果可能的话,我想知道是否还有其他更优雅的方法。
谢谢!
答案 0 :(得分:3)
如果var1 = (x,y)
和var2 = z
,您可以使用
matrix[var1][var2]
答案 1 :(得分:1)
我认为您可以简单地使用自己的新类继承NumPy矩阵类型;并重载__getitem__()
nethod以接受元组。像这样:
class SpecialMatrix(np.matrix):
def __getitem__(self, arg1, arg2, arg3=None):
try:
i, j = arg1
k = arg2
assert(arg3 is None)
x = super(SpecialMatrix, self).__getitem__(i, j, k)
except TypeError:
assert(arg3 is not None)
return super(SpecialMatrix, self).__getitem__(arg1, arg2, arg3)
使用__setitem__()
做类似的事情。
我不确定__getitem__()
是否接受多个参数,就像我在这里展示的那样,或者它是否需要一个元组,或者是什么。我写这个答案时没有NumPy,抱歉。
super()
而不是直接调用基类。自从我在Python中进行子类化以来,它已经有一段时间了。
编辑:我刚看了接受的答案。这完全是做到这一点的方式。我会留下这个以防万一有人发现它有教育意义,但简单的方法是最好的。