过滤numpy网格



我想过滤numpy网格的值:

X,Y = np.mgrid[-10:10,-10:10]

在这种情况下,我想删除x**2 + y**2 <= 2。然而,当我尝试直接过滤数组时,例如

filter(lambda x,y: x**2 + y**2 >= 2, np.meshgrid[-10:10,-10:10])

我会出错,因为我没有正确处理数组的结构。

任何正确操作的建议都将不胜感激!

我能够使用numpy.where实现我需要的结果,通过单独过滤每个数组,但在where条件下同时引用这两个数组:

X,Y = np.mgrid[-10:10,-10:10]
X,Y = np.where(X**2 + Y**2 > 2, X, 0), np.where(X**2 + Y**2 > 2, Y, 0)

这导致了新的2D阵列,这正是我对matplotlib所需要的。感谢所有花时间研究这个问题的人!

X,Y = np.mgrid[-10:10,-10:10]
idx = (X**2 + Y**2 > 2)
X, Y = X[idx], Y[idx]

问题是不再有2D阵列,这可能是matplotlib之类的东西的问题。


看到你自己的答案,并且你基本上想用不满足条件的0条目来替换,这可能会更干净、更高效:

idx = X**2 + Y**2 > 2
X[~idx] = 0
Y[~idx] = 0

相关内容

  • 没有找到相关文章

最新更新