【发布时间】:2021-12-28 13:28:39
【问题描述】:
好的,我已经看到了类似的问题,并且一直在尝试应用多种方法。我不知道我做错了什么。
我有一个创建掩码数组的函数:
def masc(arr,z):
return(np.ma.masked_where((arr[:,:,2] <= z+0.05)*(arr[:,:,2] >= z-0.05)))
其中 arr 是一个三维数组,z 是任意值。
我正在努力对唯一的 z 进行迭代,但目前只是尝试和错误地使用两个不同的 z 值运行该函数,并将两个掩码数组合并在一起。到目前为止,我的代码如下所示:
masked_array1_1 = masc(xyz,z1)
masked_array1_2 = masc(xyz,z2)
masked_1 = np.logical_and(masked_array1_1.mask,masked_array1_2.mask)
masked_array1 = np.ma.array(xyz,mask=masked_1)
我在代码行收到以下错误
masked_array1 = np.ma.array(xyz,mask = masked_1)
掩码和数据不兼容:数据大小为 703125,掩码大小为 234375。
我个人觉得错误很明显,但我弱蟒蛇的眼睛看不到它。如果我需要提供示例数组,请告诉我。
【问题讨论】:
-
能否将单行返回函数扩展为普通函数,这对易读性很有帮助。你能解释一下掩码数组应该是什么吗?
-
@Herman 掩码数组是一个三维数组,其中一些元素根据相应的 z 值进行掩码。这是否回答你的问题?抱歉,我不太擅长提出问题。
-
@hpaulj 你知道我做错了什么吗?
标签: python arrays numpy merge mask