Я хочу создать замаскированный массив с маской, которая не соответствует числу измерений массива, который я хочу замаскировать. Как правило, у меня есть стопка n
изображений, каждое из которых имеет форму (nr,nc)
, и хранится в ndarray
формы (n,nr,nc)
. Я хочу замаскировать их одной и той же маской формы (nr,nc)
Есть ли способ легко обрабатывать трансляции при создании маскированного массива? До сих пор я использовал этот поворот, но мне интересно, есть ли более чистый способ сделать это?
import numpy as np
n=10 # number of images
nr,nc=128,128 # image dimension
images = np.ones((n,nr,nc))
mask = np.zeros((nr,nc), dtype=np.bool) # mask
# Ths produce an error:
# masked_images=np.ma.masked_array(images, mask)
# create a masked version of the images, by broadcasting the mask:
masked_images=np.ma.masked_array(images, np.broadcast_to(mask, images.shape))