我有两个数组A和B,想在它们的最后一个维度上进行外积运算,例如:当A和B是二维时,result[:,i,j]=A[:,i]*B[:,j]。如果我不知道它们是二维还是三维,该怎么做呢?
在我的具体问题中,A和B是从一个更大的三维数组Z中切片得到的。有时可能会使用整数索引A=Z[:,1,:],B=Z[:,2,:],而其他时候可能会使用切片A=Z[:,1:3,:],B=Z[:,4:6,:]。由于scipy“压缩”单例维度,我无法知道我的输入将有哪些维度。
我试图定义的数组外积应满足:
在我的具体问题中,A和B是从一个更大的三维数组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,:] )
对于任意的三维数组Y,Z
和整数a,b,...i,j,k...n,N,...
我所处理的问题涉及到一个二维空间网格,在每个网格点上有一个矢量值函数。我想能够计算这些向量在第一和第二轴上定义的切片区域内的协方差矩阵(外积)。