python - numpy:跨数组广播矩阵乘法

标签 python arrays numpy matrix

我有一个 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/

相关文章:

python - Plotly:带有下拉菜单和按组颜色的散点图

javascript - 检查/引用空数组值(Google App 脚本)

javascript - 使用 Javascript 搜索数组中的项目

javascript - 如何通过动态属性名称获取数组中的所有元素?

python - 如何在 Tensorflow 2 LSTM 训练中屏蔽多输出?

python - Pandas :分组并在一个组内切割

python - 在 Python 中创建嵌套数据类对象

python - 阻止来自 *.appspot.com 的请求并在 Google App Engine 中强制自定义域

python - 高斯过程算法出错,numpy 内存问题?

python - 查找 numpy ndarray 的特定值