关于掩码二维 np.array 数据的一个问题。
例如:
value
。t = [(1,2),(3,4),(5,7),(12,13)]
如何通过
value
中的 (y,x) 屏蔽二维数组 index
?通常,替换 np.nan 是基于特定的值,如
y[y==7] = np.nan
在我的示例中,我想用 np.nan 替换值特定位置。
现在,我可以通过以下方式做到:
value_mask
value
并通过 (i,j) == t[k] value_mask[i,j]
= value[i,j]
;反过来,value_mask[i,j]
= np.nan 我的方法太笨重,尤其是对于休数据(3 级循环)。
是否有一些效率方法可以实现这一目标?任何建议将不胜感激。
最佳答案
你快到了。
您可以将索引数组传递给数组。您可能知道一维数组的这一点。
对于二维数组,您需要向数组传递一个列表元组(每个轴一个元组;对于您要选择的每个数组元素,列表中的一个元素(必须具有相同的长度))。你有一个元组列表。所以你只需要“转置”它。
t1 = zip(*t)
为您提供索引数组的正确形状;您现在可以将其用作任何分配的索引,例如:
value[t1] = np.NaN
(如果你还不知道,python 教程中有很多关于这个技巧的很好的解释(使用
zip
和 *
)。)关于python - 通过用户定义的索引用 np.nan 替换 np.array 值的最干净方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36262417/