我遇到了一个问题,我已经打开并解释了HERE。简而言之,我需要用值替换我的分析矩阵中的符号并将它们加在一起。为了更好的解释,我做了如下图: 当然会有更多尺寸更大的矩阵。
然而,我决定以不同的方式解决这个问题,我首先在一个更大的数组中保存了我的矩阵的所有不同变体,然后从那里开始总结它们。到目前为止,这是我的代码:
from sympy import*
import numpy as np
init_printing()
T, logS = symbols('T, logS')
sig_izris = [[300,320,310],[410,435,440],[505, 515, 520]]
temperatura = [[500],[550],[600]]
Nap = np.asarray(np.log10(sig_izris))
Temp = []
for i in range(len(temperatura)):
Temp.append(temperatura[i][0]+273.15) #Conversion to Kelvin
def double_sum(mat, temp, nap):
mat_12 = mat.subs(T, temp)
mat_12 = mat_12.subs(logS, nap)
return np.asarray(mat_12)
test = Matrix([[logS, T, -1],[1, T**2, logS**2],[logS**3, T**2, 1]])
matrika = test
A = []
for i in range(len(Temp)):
for j in range(len(Nap[i])):
A.append(double_sum(matrika, Temp[i], Nap[i][j]))
mat_sum = sum(A)
mat_sum
但我并不完全相信我的代码是100%正确的,或者是否可以优化流程。
我想知道用它们的元素求和几个数组的正确方法是什么。我尝试使用运算符模块中的add
甚至是zip
,但只是无法写入正确的代码。
答案 0 :(得分:1)
要添加几个与元素相同大小的NumPy数组,就像手写公式所示,您只需编写
M = M1 + M2 + M3
同样添加SymPy矩阵。你可以混合搭配两个:
import sympy
from sympy.abc import x
import numpy
A = sympy.Matrix([[x,0],[0,x]])
B = numpy.eye(2)
print A + B # Prints "Matrix([[x + 1.0, 0], [0, x + 1.0]])"