numpy에서 행렬을 곱하는 문제가 있습니다.numpy tensordot 관련 문제
P[0]*P[0][:,np.newaxis]
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
저장 :
P=np.arange(30).reshape((-1,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
제가 첫번째 행에 대한 예를 들면, 행마다 를 3 × 3 행렬을 획득하기 위해 그 전치 각 행을 곱 할 : 여기 은 일례이며 3-D 매트릭스 M에 결과 :
M=np.zeros((10,3,3))
for i in range(10):
M[i] = P[i]*P[i][:,np.newaxis]
나는 어쩌면 텐서 점으로, 반복하지 않고 할 수있는 방법이있을 수 있습니다 생각하지만, 그것을 찾을 수 없습니다.
누군가 아이디어가 있습니까?
위대한, 정확히 내가 뭘 찾고 있었는지, 거기에 쉬운 방법론은 없음으로 확장해야 색인을 이해하는 것입니다? –
@ 안드레아 Z : 그런 방법론; 먼저 'numpy'방송이 실제로 어떻게 작동하는지 알아 내려고합니다. 그런 다음 당신이 '모양 = (10, 3, 3)'을 찾고 있음을 깨달으면'(P [:, :, None] * P [:, None, :]). 모양 == (10, 3, 3)'. 아마도 가장 좋은 설명은 아니지만, 내가 강조하는 요점은; 어떻게 방송이 작동하는지 자신을 숙지하십시오. 이제 '방송의 내장'에 대한 다른 질문을 자유롭게하십시오! 감사합니다 – eat