儘管我的問題似乎與sympy github問題here相關,但它似乎沒有直接關係,或者仍然是一個未解決的問題(從2012年開始)。sympy矩陣內的sympy矩陣仍未評估代換
我的問題是我在我的矩陣表示的矩陣中有一個'矩陣'(實際上,它只是一個矢量,但是我唯一的選擇,因爲sympy處理的是事物),當被替換時,矩陣顯示出一個矩陣而不是評估它。
下面是代碼的樣品塊,這將證明這一點:
import numpy as np
import sympy
x = np.random.rand(15, 3)
l_syms = sympy.MatrixSymbol('l', 1, 3)
m = sympy.Matrix(x/l_syms)
m.subs({l_syms:sympy.Matrix([[1,1,1]])})
中的每個值的matrix
[[1,1,1]]應當分爲m
矩陣的每個元素,但矩陣按原樣放置,並保留索引符號。
Matrix([
[ 0.98979011265311*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.833576329284127*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.575808048824554*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.523263044342704*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.320197709246721*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.592365354846089*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.943288501064919*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.996020450969247*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.964522394691641*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.763752929521655*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.690054409108757*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.417629855595703*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.213578356927868*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.362782611339912*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.892921288169683*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.068921237699985*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.244310349677818*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.977494896836049*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[0.0169721915631557*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.254316922886399*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.682785271511585*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.768287921847173*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.679243253034139*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.790710466097621*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.892115183428169*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.988514816033581*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.537769900907173*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.275725750770885*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.928279364723852*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.18023576064915*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.71421202332017*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.663585719630706*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.43460735199406*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.770814091341355*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0650430822905173*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.0845773234523002*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[0.0398441324212175*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0358479090409692*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.0801076763216808*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.89937521111821*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.21500916688666*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.661216039738327*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.866641224226343*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0506005171711028*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.791277139679317*Matrix([[1, 1, 1]])[0, 2]**(-1)]])
我似乎沒有能夠找到一種方法來評估所有的Matrix對象,它們的指標 - 遠程相關的是GitHub的問題上面鏈接的唯一的事情,但使用xreplace
是我的意圖甚至不太理想/正確,因爲它留下的符號就位,而不是取代矩陣英寸
任何幫助非常感謝。
這是一個更相關的問題https://github.com/sympy/sympy/issues/2962 – asmeurer