【发布时间】:2021-08-24 15:42:17
【问题描述】:
我想在 numpy 数组和 pandas 系列上使用布尔索引来选择某一列中所有值为 import numpy as np
a = [0.5, 0, 1, 17, np.nan]
b = np.array(a)
c = b[b < 3 or b == np.nan]
【问题讨论】:
标签: python numpy indexing boolean
我想在 numpy 数组和 pandas 系列上使用布尔索引来选择某一列中所有值为 import numpy as np
a = [0.5, 0, 1, 17, np.nan]
b = np.array(a)
c = b[b < 3 or b == np.nan]
【问题讨论】:
标签: python numpy indexing boolean
您需要使用方括号,将or 替换为| 运算符并使用np.isnan 而不是==。
c = b[(b < 3) | np.isnan(b)]
RuntimeWarning 可能是因为它试图将NaN 值与数字进行比较。您可以尝试在该会话中忽略它:
with np.errstate(invalid='ignore'):
c = b[(b < 3) | np.isnan(b)]
【讨论】:
其中一个应该可以解决问题:
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.where 可能会稍微快一点?只是猜测。
【讨论】: