Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 包含两个条件以包含NaN的布尔索引_Python_Numpy_Indexing_Boolean - Fatal编程技术网

Python 包含两个条件以包含NaN的布尔索引

Python 包含两个条件以包含NaN的布尔索引,python,numpy,indexing,boolean,Python,Numpy,Indexing,Boolean,我想在numpy数组和pandas系列上使用布尔索引来选择值为的所有行,其中一个应该起作用: c = b[np.logical_or(b < 3, b == np.nan)] # or c = b[np.where((b < 3) | (b == np.nan))] # or c = b[(b < 3) | (b == np.nan)] 我不知道一个比另一个有什么好处,但是如果我不得不猜测的话,我会说np,其中一个可能稍微快一点?只是猜测一下。您需要使用括号,将或替换为|运算

我想在numpy数组和pandas系列上使用布尔索引来选择值为的所有行,其中一个应该起作用:

c = b[np.logical_or(b < 3, b == np.nan)]
# or
c = b[np.where((b < 3) | (b == np.nan))]
# or
c = b[(b < 3) | (b == np.nan)]

我不知道一个比另一个有什么好处,但是如果我不得不猜测的话,我会说np,其中一个可能稍微快一点?只是猜测一下。

您需要使用括号,将或替换为|运算符,并使用np.isnan而不是==

c=b[b<3 | np.isnanb] RuntimeWarning可能是因为它试图将NaN值与数值进行比较。您可以尝试在该会话中忽略它:

with np.errstate(invalid='ignore'):
    c = b[(b < 3) | np.isnan(b)]

不适用于我运行时警告:在较少的c=b[b<3 | b==np.nan]中遇到无效值从简单的python/IPython终端(即没有Pycharm)中是否相同?您可能在环境中吗?我更新了关于忽略警告的答案。我刚刚直接从终端尝试了相同的脚本,收到了相同的错误消息谢谢,我将您的更新包含在np中。errstateinvalid='ignore':现在它可以工作了,谢谢您的帮助!此外,这些都不适用于我运行时警告:在c=b[np.logical_orb<3,b==np.nan]中遇到无效值您正在运行发布的示例吗?或者有更多数据的东西?只有我贴的例子其他人有问题吗?我可以毫无问题地运行它们——可能是NumPyI的不同版本有问题,因为我在Python3.6和pycharm中使用了np v1.16.0。编辑:刚刚更新到1.20,问题仍然存在。
with np.errstate(invalid='ignore'):
    c = b[(b < 3) | np.isnan(b)]