我有一个三维数组,我想使用一个与三维数组最右边的两个维度相同的二维数组进行掩码处理。是否有一种方法可以在不编写以下循环的情况下完成此操作?
import numpy as np
nx = 2
nt = 4
field3d = np.random.rand(nt, nx, nx)
field2d = np.random.rand(nx, nx)
field3d_mask = np.zeros(field3d.shape, dtype=bool)
for t in range(nt):
field3d_mask[t,:,:] = field2d > 0.3
field3d = np.ma.array(field3d, mask=field3d_mask)
print field2d
print field3d
numpy.newaxis
选项现在会发出警告:VisibleDeprecationWarning: boolean index did not match indexed array along dimension 2; dimension is 3 but corresponding boolean dimension is 1
。 - Benjaminfield3d = np.random.rand(nx, nx, 4)
(注意nx
和nt=4
的顺序不同),则np.broadcast_to()
将会发出一个 ValueError: "operands could not be broadcast..."。在图像分析中,将二进制掩码应用于具有多个通道(例如 RGBA)的图像是一项常见任务。 - normanius