鉴于MatX
,MatY
和MatZ
,我有以下作业:
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]
分配某种快捷方式,以避免每次都复制和粘贴代码?
答案 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 = ....
其他变量s
和t
可以作为参数传递或从环境中传递。