私は 2 つの配列を持っており、たとえば 2 次元の
場合などA,B
、最後の次元で外積を取りたいと考えてい
ます。result[:,i,j]=A[:,i]*B[:,j]
A,B
2 次元になるか 3 次元になるか分からない場合はどうすればよいですか?
私の特定の問題A,B
では、より大きな 3 次元配列からのスライスがあります。Z
これは整数インデックスで呼び出されることもあればA=Z[:,1,:], B=Z[:,2,:]
、スライスで呼び出されることもありますA=Z[:,1:3,:],B=Z[:,4:6,:]
。scipy はシングルトン次元を「圧迫」するため、入力がどの次元になるかわかりません。
私が定義しようとしている配列外積は、
array_outer_product( Y[a,b,:], Z[i,j,:] ) == scipy.outer( Y[a,b,:], Z[i,j,:] )
array_outer_product( Y[a:a+N,b,:], Z[i:i+N,j,:])[n,:,:] == scipy.outer( Y[a+n,b,:], Z[i+n,j,:] )
array_outer_product( Y[a:a+N,b:b+M,:], Z[i:i+N, j:j+M,:] )[n,m,:,:]==scipy.outer( Y[a+n,b+m,:] , Z[i+n,j+m,:] )
ランク 3 の配列Y,Z
と整数の場合a,b,...i,j,k...n,N,...
私が扱っている種類の問題には、各グリッド ポイントにベクトル値関数がある 2 次元空間グリッドが含まれます。最初の 2 つの軸のスライスで定義された領域で、これらのベクトルの共分散行列 (外積) を計算できるようにしたいと考えています。