Python 通过二维阵列屏蔽三维阵列,以便在不使用for循环的情况下进行切片

Python 通过二维阵列屏蔽三维阵列,以便在不使用for循环的情况下进行切片,python,numpy,vectorization,numpy-slicing,Python,Numpy,Vectorization,Numpy Slicing,我有类似的东西 import numpy as np array_3D = np.random.rand(3,3,3) array_2D = np.random.randint(0, 3 , (3,3)) for i in range(3): for j in range(3): array_3D[:, i, j][:array_2D[i, j]]=np.nan 有没有一种方法可以在不使用双for循环的情况下执行此操作?创建具有外部范围比较的遮罩,然后

我有类似的东西

import numpy as np 

array_3D =  np.random.rand(3,3,3) 
array_2D = np.random.randint(0, 3 , (3,3)) 

for i in range(3):
    for j in range(3): 
        array_3D[:, i, j][:array_2D[i, j]]=np.nan  

有没有一种方法可以在不使用双for循环的情况下执行此操作?

创建具有外部范围比较的遮罩,然后分配-

mask = np.less.outer(np.arange(len(array_3D)), array_2D)  
array_3D[mask] = np.nan