我有一个 3xN
数组,概念上是一个 N
3 向量数组,我想构建
矩阵将给定的 3x3
矩阵与
大批。有没有一种以矢量化方式执行此操作的好方法?
目前,我的问题是3xN
,但将来我可能需要考虑3xNxM
(或更多)。
循环方法
U=numpy.rand( [3,24] )
R=numpy.eye(3) # placeholder
for i in xrange( U.shape[1]):
U[:,i]=numpy.dot( R, U[:,i] )
最佳答案
使用 np.einsum 函数你甚至可以解决多维问题:
U = np.random.rand(3,24,5)
R = np.eye(3,3)
result = np.einsum( "ijk,il", U,R )
表示法有点棘手:首先给出的字符串表示数组维度的索引;所以对于 U 来说,索引 ijk 是每个维度的运行索引。它遵循爱因斯坦求和约定,因此字符串中具有相同字母的索引将被求和。有关详细信息,请阅读 ScipyDocs .我敢肯定在你的情况下 dot 更快,因为开销更少并且它可能会使用一些 blas 例程,但是正如你所说你想要扩展到更多维度这可能是要走的路。
关于python - numpy:跨数组广播矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969897/