【发布时间】:2021-12-28 16:34:43
【问题描述】:
以不同的方式提出这个问题的标题。
我有一个函数,它采用一个三维数组并根据特定条件屏蔽数组中的某些元素。见下文:
#function for array masking
def masc(arr,z):
return(np.ma.masked_where((arr[:,:,2] <= z+0.05)*(arr[:,:,2] >= z-0.05), arr[:,:,2]))
arr 是 3D 数组,z 是单个值。
我现在想对多个 Z 值进行迭代。这是一个具有 2 个 z 值的示例:
masked_array1_1 = masc(xyz,z1)
masked_array1_2 = masc(xyz,z2)
masked_1 = masked_array1_1.mask + masked_array1_2.mask
masked_array1 = np.ma.array(xyz[:,:,2],mask=masked_1)
masked_array1 正是我想要的。
我已经开始编写一个 forloop 来遍历一个 Z 值的一维数组:
mask_1 = xyz[:,:,2]
for i in range(Z_all_dim):
mask_1 += (masc(xyz,Z_all[i]).mask)
masked_array1 = np.ma.array(xyz[:,:,2], mask = mask_1)
Z_all 是一个包含 7 个唯一 z 值的数组。这段代码不起作用(整个数组最终被屏蔽)但我觉得我很接近。有没有人看看我是不是做错了什么?
【问题讨论】:
-
也许首先将代码拆分成简单的命令并使用
print()来查看不同时刻变量中的内容——它被称为"print debuging" -
你的函数 masc(arr,z) 想要一个数组 arr 和标量 z,但是你给它喂了一堆东西 - (xyz,IWX_new[0],IWY_new[0],MWX[ 0],MWY[0],Z_all[i])
-
@jeremy_rutman 拍摄。感谢您注意到这一点。我拿出了一堆对这个问题没有用的其他东西,但忘记了。
标签: python arrays function numpy mask