In [758]: v = np.array([[1, 2, 3, 4]])
In [759]: v2 = np.vstack([v,v])
In [760]: v2.shape
Out[760]: (2, 4)
In [761]: v2[:,None,:]*v2[:,:,None]
Out[761]:
array([[[ 1, 2, 3, 4],
[ 2, 4, 6, 8],
[ 3, 6, 9, 12],
[ 4, 8, 12, 16]],
[[ 1, 2, 3, 4],
[ 2, 4, 6, 8],
[ 3, 6, 9, 12],
[ 4, 8, 12, 16]]])
In [762]: _.shape
Out[762]: (2, 4, 4)
私は外製作のために放送を使用しています。
In [765]: np.array([[[1, 2], [2, 4]],[[4, 2],[2, 1]]])
Out[765]:
array([[[1, 2],
[2, 4]],
[[4, 2],
[2, 1]]])
数字がありますが、第二面が反転している:あなたのコメントの例に対してチェック
は
In [763]: x2= np.array([[1, 2], [1, 2]])
In [764]: x2[:,None,:]*x2[:,:,None]
Out[764]:
array([[[1, 2],
[2, 4]],
[[1, 2],
[2, 4]]])
あなたは望んでいました。それは本当にあなたが望むものですか?明らかに、ディメンションがどのようにマップされるかにあいまいさがあります。これが本当に必要なものなら、それを繰り返し行う方法を説明してください。 einsum
で
この外積はmatmul
で
In [770]: np.einsum('ij,ik->ijk', x2,x2)
Out[770]:
array([[[1, 2],
[2, 4]],
[[1, 2],
[2, 4]]])
ある式がある:v2[:,:,None]@v2[:,None,:]
。
'[[1、2]、[1,2]] 'の出力の例を挙げることができますか? –
array([[1,2]、[2,4]]、[[4,2]、[2,1]]]) –
'np.einsum'と' np.matmul'がこれを処理できます。実際にはこれは外側の製品なので、それらは必要ありません。放送はそれを処理することができます。 – hpaulj