在矩阵乘法中一次分配多个变量

时间:2015-03-03 22:59:31

标签: python numpy matrix

鉴于MatXMatYMatZ,我有以下作业:

x = np.dot([s**3, s**2, s, 1], np.dot(
    transpose(self.B), np.dot(
    np.transpose(self.MatX, np.dot(
    self.MatX, np.dot(
    self.B, np.transpose([t**3, t**2, t, 1])))))))

y = np.dot([s**3, s**2, s, 1], np.dot(
    transpose(self.B), np.dot(
    np.transpose(self.MatY, np.dot(
    self.MatY, np.dot(
    self.B, np.transpose([t**3, t**2, t, 1])))))))

z = np.dot([s**3, s**2, s, 1], np.dot(
    transpose(self.B), np.dot(
    np.transpose(self.MatZ, np.dot(
    self.MatZ, np.dot(
    self.B, np.transpose([t**3, t**2, t, 1])))))))

这非常多余,因为我只在每种情况下更改Mat?。有没有办法直接为[x,y,z]分配某种快捷方式,以避免每次都复制和粘贴代码?

1 个答案:

答案 0 :(得分:0)

定义一个函数:

def foo(Mat, B):
    result = np.dot([s**3, s**2, s, 1], np.dot(B.T, np.dot(np.transpose(Mat, np.dot(Mat, np.dot(B, np.transpose([t**3, t**2, t, 1])))))))
    return result

x = foo(self.MatX, self.B)
y = ....
z = ....

其他变量st可以作为参数传递或从环境中传递。