【问题标题】:Optimizing 3d-array algorithm using numpy silces [duplicate]使用 numpy silces 优化 3d 数组算法 [重复]
【发布时间】:2021-01-09 17:29:18
【问题描述】:

处理一个 3d-numpy 数字数组问题,将其中的值乘以一组权重,对它们求和并更新它们。

我有一个带有维度 (H, W, 3) 的 3d-numpy 数组“网格”,我想在其中将一些恒定权重乘以 3 个内部值,然后将它们相加,并用总和更新数组.我为此编写了以下python算法:

weights = (0.65, 0.33, 0.07)
for i in range(len(grin)):
        for j in range(len(grid[i])):
            sum = 0
            for k in range(3):
                sum += grid[i][j][k] * weights[k]
            grid[i][j] = [sum]

这按预期工作,现在我想通过使用更多的 numpy 方法来优化代码速度/长度,例如数组切片以切除一些 for 循环。 我对 numpy 和学习还很陌生,想知道有哪些方法可以做到这一点?

【问题讨论】:

    标签: python arrays numpy slice


    【解决方案1】:

    这实际上非常简单:

    h, w = 20, 40
    grid = np.random.random((h, w, 3))
    weights = (0.65, 0.33, 0.07)
    
    
    image = (grid * weights).sum(axis=-1)
    
    
    # np.allclose(image, image2)
    # True
    

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 2019-07-10
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多