【问题标题】:Avoid for loop using numpy matrices避免使用 numpy 矩阵的 for 循环
【发布时间】:2015-09-11 15:21:00
【问题描述】:

我想知道这一定是一种在没有 for 循环的情况下执行以下操作的方法:

import numpy
from itertools import product as itprod

a = np.arange(120.).reshape(3,2,5,2,2)
fact = np.linspace(1,1.4,15).reshape((3,5))

for i,j in itprod(range(3),range(5)):
    a[i,:,j]*= fact[i,j]

有什么建议吗??

【问题讨论】:

  • 为什么要避免 for 循环?
  • @That1Guy:Python for 循环是在 Numpy 数组上操作的一种相当慢的方式。 Numpy 的想法是进行向量化的高级调用,因此实际的循环可以在优化的 C 代码中发生。

标签: python for-loop numpy matrix


【解决方案1】:

要利用广播,您必须在正确的位置为 fact 插入新轴:

a *= fact[:, np.newaxis, :, np.newaxis, np.newaxis] 

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多