np.logical_not
是 NumPy 提供的一个用于逻辑取反的函数。它会将数组中的每个布尔值取反,即将 True
变为 False
,False
变为 True
。此外,对于非布尔数组,np.logical_not
会将非零值视为 True
、将零视为 False
,然后执行取反操作。
语法
np.logical_not(x, out=None)
- x:输入数组,可以是布尔型或数值型。
- out:可选参数,用于指定存放输出结果的数组。
返回值
返回一个与 x
相同形状的布尔数组,表示 x
中各元素取反后的结果。
示例代码
1. 对布尔数组取反
import numpy as np
bool_array = np.array([True, False, True, False])
result = np.logical_not(bool_array)
print(result) # 输出: [False True False True]
2. 对数值数组取反
num_array = np.array([1, 0, -1, 2, 0])
result = np.logical_not(num_array)
print(result) # 输出: [False True False False True]
在数值数组中,0
被视为 False
,因此取反为 True
;非零值(如 1
、-1
、2
)被视为 True
,取反后变为 False
。
3. 与 np.isnan
结合使用
一个常见用法是检测 NaN 值后取反。以下示例对数组中 NaN
元素生成掩码,非 NaN
元素位置为 True
。
array = np.array([1.0, np.nan, 3.5, np.nan, 5.0])
mask = np.logical_not(np.isnan(array))
print(mask) # 输出: [ True False True False True]
这里 np.isnan(array)
生成一个布尔数组表示 NaN
的位置,np.logical_not
则取反,得到非 NaN
的位置为 True
的掩码。