【发布时间】:2021-05-06 14:52:46
【问题描述】:
使用 2D 布尔掩码屏蔽 4D 布尔数组的最有效方法。
我尝试了两种方法:
A.将遮罩重塑为 4D 并遮罩
B.将倒置蒙版重塑为 4D 并乘以两个矩阵
import numpy as np
import time
I = 150
J = 2000
K = I
S = 25
matrix_to_mask = np.random.choice(a=[True, False], size=(I, J, K, S))
mask_2d = np.random.choice(a=[True, False], size=(I, S))
t = time.time()
matrix_to_mask[np.tile(mask_2d[:, np.newaxis, np.newaxis, :], (1, J, K, 1))] = False
print("Mask: " + str(time.time() - t)) # 2.77 sec
t = time.time()
a = matrix_to_mask * np.tile(np.invert(mask_2d)[:, np.newaxis, np.newaxis, :], (1, J, K, 1))
print("Product: " + str(time.time() - t)) # 1 sec
有没有其他方法可以加快蒙版速度?
谢谢
【问题讨论】:
标签: python performance numpy boolean mask