访问矩阵元素,使用matrix[(a, b), c]而不是matrix[a, b, c]

2024-10-02 20:39:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想实现以下目标:

  1. 有一个AxBxC矩阵(其中a,B,C是 整数)。在
  2. 访问矩阵而不是矩阵[a, b、 但作为矩阵[(a,b),c],这个 有两个变量,var1=(x, y) 并且var2=z并且想要访问我的 矩阵为矩阵[var1,var2]。在

如何做到这一点?我用的是纽比矩阵,如果有什么不同的话。在

我知道我可以用矩阵[var1[0],var1[1],var2],但如果可能的话,我想知道是否还有其他更优雅的方式。在

谢谢!在


Tags: 目标方式矩阵整数var1var2axbxc
2条回答

如果var1 = (x,y),并且var2 = z,则可以使用

matrix[var1][var2]

我认为您可以简单地用自己的新类来子类化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__()是否像我在这里展示的那样接受多个参数,或者它是否需要一个元组,或者什么。我写这个答案的时候没空,抱歉。在

{I{I>直接写了一个基类来编辑。我已经有一段时间没有在Python中使用子类化了。在

编辑:我只是看了一下被接受的答案。完全是这样做的。如果有人觉得这很有教育意义,我就不谈了,但简单的方法是最好的。在

相关问题 更多 >