У вас есть 2 варианта:
Создать 3d-маску -
final = np.ones((1,512,90,160))
final2 = np.copy(final)
mask = np.random.randint(1,10,size = (1,90,160)) > np.random.randint(1,10,size = (1,90,160))
masked = np.copy(final)
masked[:,0,:,:] = np.logical_and(masked[:,0,:,:],mask)
masked = np.logical_and.accumulate(masked,axis = 1)
np.putmask(final,masked == False, 0)
Приведенное выше создаст 3d-маску и использует ее для маскировки final
.
* 1008.* другой вариант, намного проще, просто умножить:
np.multiply(final,mask)
NP обрабатывает размеры и даст вам замаскированную версию.
Вы можете проверить это с помощью:
(np.multiply(final2,mask) == final).all()