【发布时间】:2012-07-22 04:06:03
【问题描述】:
我有两个数组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,...
我正在处理的问题涉及二维空间网格,每个网格点都有一个向量值函数。我希望能够在前两个轴上的切片定义的区域上计算这些向量的协方差矩阵(外积)。
【问题讨论】:
-
你能发布一些示例输入和输出吗?
-
你看过 numpy.multiply.outer 吗?我认为这就是它的作用(但我没有仔细阅读这篇文章)。
标签: python arrays numpy scipy slice