나는 상징적 인 행렬에서 값의 색인을 찾고 싶다. 예를 들어, 아래 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]))
인 경우 ols, 즉, Zc*L
. 그럼 어떻게해야합니까? 값이 Zc*L
이고 L*Zc
인 경우 색인을 제공해야합니다. 그러나 -L*Zc*Yc/2
의 지수는 아닙니다. 따라서 예상 답변은 [(0,1),(1,0)]
입니다.
답장을 보내 주셔서 감사합니다. 비슷한 줄에 또 하나의 질문이 있습니다. 내가 Zc * L과 같은 기호의 제품을 기반으로 색인을 찾아야하는 경우. 그럼 어떻게해야합니까? 나는이 질문을 파트 2로 포함시키기 위해 나의 질문을 편집했고 위에서 상세하게 설명했다. –
두 번째 답변에서 'for 루프'범위가 3이면 모든 제품 기호 Zc * L의 인덱스를 제공합니다. 따라서이 코드는 [[0, 1], [1, 0], [2, 1]]을 제공합니다. 그러나 [2, 1] 요소는 -L * Zc * Yc/2입니다. 이 인덱스 배열에 포함 된 싶지 않습니다. Zc와 L 사이의 제품 색인 만 원합니다 (L * Zc * Yc 아님). 내가 어떻게 할 수 있니? –
요구 사항이 점점 모호 해지고 있지만 버전을 추가했습니다. – FTP