“不是” numpy 中的功能,这可以更 Pythonic 吗?

发布于 2024-09-01 20:53:15 字数 343 浏览 12 评论 0原文

我需要一个从数组返回非 NaN 值的函数。目前我正在这样做:

>>> a = np.array([np.nan, 1, 2])
>>> a
array([ NaN,   1.,   2.])

>>> np.invert(np.isnan(a))
array([False,  True,  True], dtype=bool)

>>> a[np.invert(np.isnan(a))]
array([ 1.,  2.])

Python:2.6.4 numpy:1.3.0

如果您知道更好的方法,请分享, 谢谢

I need a function that returns non-NaN values from an array. Currently I am doing it this way:

>>> a = np.array([np.nan, 1, 2])
>>> a
array([ NaN,   1.,   2.])

>>> np.invert(np.isnan(a))
array([False,  True,  True], dtype=bool)

>>> a[np.invert(np.isnan(a))]
array([ 1.,  2.])

Python: 2.6.4
numpy: 1.3.0

Please share if you know a better way,
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

楠木可依 2024-09-08 20:53:15
a = a[~np.isnan(a)]
a = a[~np.isnan(a)]
缱倦旧时光 2024-09-08 20:53:15

您当前正在测试任何非 NaN 的内容,并且 mtrw 有正确的方法来执行此操作。如果您有兴趣测试有限数(不是 NaN 也不是 INF),那么您不需要反转,可以使用:

np.isfinite(a)

更多 Pythonic 和本机,易于阅读,并且通常当您想避免 NaN 时,您也想要根据我的经验,避免 INF。

只是想我会把它扔给人们。

You are currently testing for anything that is not NaN and mtrw has the right way to do this. If you are interested in testing for finite numbers (is not NaN and is not INF) then you don't need an inversion and can use:

np.isfinite(a)

More pythonic and native, an easy read, and often when you want to avoid NaN you also want to avoid INF in my experience.

Just thought I'd toss that out there for folks.

旧伤还要旧人安 2024-09-08 20:53:15

从数组获取 array([ 1., 2.]) arr = np.array([np.nan, 1, 2])
你可以这样做:

 arr[~np.isnan(arr)]

OR

arr[arr == arr] 

(而:np.nan == np.nanFalse

To get array([ 1., 2.]) from an array arr = np.array([np.nan, 1, 2])
You can do :

 arr[~np.isnan(arr)]

OR

arr[arr == arr] 

(While : np.nan == np.nan is False)

秋日私语 2024-09-08 20:53:15

我不确定这是否或多或少是Pythonic的......

a = [i for i in a if i is not np.nan]

I'm not sure whether this is more or less pythonic...

a = [i for i in a if i is not np.nan]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文