【问题标题】:How to quickly mask different slices in my array?如何快速屏蔽阵列中的不同切片?
【发布时间】:2019-03-21 12:08:12
【问题描述】:

我有一个 3d 数组,其中所有轴长度都相同(例如 (5,5,5))。我需要根据下面的代码屏蔽所有数组并保持数组中的某些切片不被屏蔽。我设法使用 for 循环来完成此任务,但我想知道是否有更快的解决方案。

array = np.reshape(np.array(np.random.rand(125)), (5,5,5))
array = ma.array(array, mask=True)
for i in range(array.shape[0]):
    for j in range(array.shape[1]):
        array[i, j, :].mask[i:j] = False

这允许我将此数组与另一个相同大小的数组相加,同时忽略屏蔽值。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用广播一步创建整个蒙版:

    i, j, k = np.ogrid[:5, :5, :5] 
    mask = (i>k) | (k>=j)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2019-06-19
      相关资源
      最近更新 更多