覆盖特殊矩阵的matmul

2024-07-05 09:09:21 发布

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

我有一个应用程序,我必须做很多(昂贵的)矩阵乘法。这些矩阵中的许多(但不是全部)都有特殊的结构,我很容易为其定义自定义数据表示和自定义矩阵乘法例程。我希望能够将这些与任意矩阵混合并匹配,这些矩阵表示为普通2d数组。在

举一个最简单的例子,我想做这样的事情:

import numpy as np

class IdentityMatrix:
    def __matmul__(self, other):
        return other

    def __rmatmul__(self, other):
        return other

    __array_priority__ = 10000

其中IdentityMatrix知道它对左边或右边的矩阵起作用时什么也不做。我希望将__array_priority__设置为一个较大的数字,当另一个参数是ndarray时,它将始终覆盖ndarray的矩阵乘法,但这不起作用:

^{pr2}$

反转输入会产生相同的错误。令人沮丧的是这确实是seem to work for operations other than matmul。在

有没有什么简单的方法可以按照我想要的方式覆盖matmul?在

谢谢!在


Tags: self应用程序return定义def矩阵结构array