使用变量的抽象矩阵乘法

12

我知道Python有进行矩阵乘法的能力。 不幸的是,我不知道如何抽象地进行这个操作?也就是说,不是用具体的数字,而是用变量。

例如:

M = ( 1   0 ) * ( 1   d )
    ( a   c )   ( 0   1 )

有没有一种方式可以定义a、c和d,使得矩阵乘法可以给出以下结果:
( 1   d       )
( a   a*d + c )

?


3
看看sympy这个Python符号计算库。 - dseuss
2个回答

19

使用sympy,您可以这样做:

>>> from sympy import *
>>> var('a c d A B')
(a, c, d, A, B)
>>> A = Matrix([[1, 0], [a, c]])
>>> A
Matrix([
[1, 0],
[a, c]])
>>> B = Matrix([[1, d], [0, 1]])
>>> B
Matrix([
[1, d],
[0, 1]])
>>> M = A.multiply(B)
>>> M
Matrix([
[1,       d],
[a, a*d + c]])

-1

就像任何变量一样,数组/矩阵只能用特定的值进行初始化。你唯一能做的就是编写函数来使初始化更容易。

import numpy as np

def helper(a, c, d):
    A = np.array([[1, 0], [a, c]])
    B = np.array([[1, d], [0, 1]])
    return A @ B

(其中@运算符是显式矩阵乘法运算符)


1
应该有一个函数名吗? - Asterisk
@Asterisk:是的,当然,这是一个正常的函数。已经修复了拼写错误。 - blue_note

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接