我有两个数组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,:] )
对于任何 rank-3 数组Y,Z
和整数a,b,...i,j,k...n,N,...
我正在处理的问题涉及二维空间网格,每个网格点都有一个向量值函数。我希望能够在前两个轴上的切片定义的区域上计算这些向量的协方差矩阵(外积)。