【问题标题】:Avoid Numpy Index For loop避免 Numpy Index For 循环
【发布时间】:2017-02-09 20:10:32
【问题描述】:

有什么方法可以避免使用第二个for 循环来执行这样的操作?

for x in range(Size_1):
    for y in range(Size_2):
        k[x,y] = np.sqrt(x+y) - y

或者有没有更好的方法来优化它?现在对于大尺寸来说它非常慢。

【问题讨论】:

标签: performance numpy vectorization numpy-ufunc


【解决方案1】:

这是broadcasting 的矢量化解决方案 -

X,Y = np.ogrid[:Size_1,:Size_2]
k_out = np.sqrt(X+Y) - Y

【讨论】:

    【解决方案2】:

    补充 Divakar 的解决方案:如果 YX 不是新范围,而是一些预先存在的数字向量,请使用 np.ix_

    Y, X = np.array([[1.3, 3.5, 2], [2.0, -1, 1]])
    Y, X = np.ix_(Y, X) # does the same as Y = Y[:, None]; X = X[None, :]
    out = np.sqrt(Y+X) - X
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2023-03-27
      • 2012-06-25
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多