シンボリック行列の値のインデックスを探したいと思います。たとえば、私は、下のQ行列に 'Zc'シンボルを持つインデックスを探したいと思います。記号に基づいて記号行列の要素のインデックスを見つける方法は?
from sympy import symbols, Matrix
Zc,Yc,L=symbols("Zc Yc L",real=True)
Q=Matrix(([0,Zc,-Y],[-Zc*L,0,L/2],[Yc,-L/2,0]))
予想される回答は[(0,1)、(1,0)]です。これは
(配列([0]、DTYPE = int64型)として空のセットを与え
numpy.where(A in K_P.free_symbols)
Iはnumpy.whereと試みたが、それは空set.Thatである返さパート2: 私はSYMBの製品に基づいてインデックスを検索したい場合はQ行列は
Q=Matrix(([0,Zc*L/6,-Yc],[-L*Zc/12,0,L/2],[Yc,-L*Zc*Yc/2,0]))
ある場合すなわち、Zc*L
。それではどうすればいいですか?値がZc*L
とL*Zc
の場合はインデックスが必要です。しかし、-L*Zc*Yc/2
のインデックスではありません。期待される答えは[(0,1),(1,0)]
です。
ありがとうございました。私は同様の行についてさらにもう一つの質問があります。もし私がZc * Lのようなシンボルの製品に基づいてインデックスを見つける必要があれば。それではどうすればいいですか?私はこの質問をパート2として含めるように私の質問を編集し、詳細な説明は上記に与えられている。 –
2番目の答えでは、 'forループ'の範囲が3の場合、すべての積記号Zc * Lのインデックスが与えられます。このコードは[[0、1]、[1、0]、[2,1]]を与えます。しかし、[2,1]要素は-L * Zc * Yc/2です。私はこれをインデックス配列に含めることは望ましくありません。私はZcとLの間の製品のインデックスのみを必要とします(L * Zc * Ycではなく)。どのように私はこれを行うことができますか? –
要件はますます曖昧になりつつありますが、そのためのバージョンを追加しました。 – FTP