You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy数值数组是否支持‘逻辑非’操作?如何反转二进制数组

针对数值型Numpy数组的“逻辑非”反转操作方法

当然有简便的方法实现你要的效果!针对由0和1组成的数值型Numpy数组,这里有几个实用的技巧,帮你快速得到反转后的数组:

方法1:直接算术运算 1 - x

这是最直观高效的方法,因为你的数组元素只有0和1,用1减去每个元素刚好实现0和1的互换:

import numpy as np
x = np.array([1,0,1,0,0,1])
y = 1 - x
print(y)  # 输出: [0 1 0 1 1 0]

方法2:使用Numpy的逻辑非函数 np.logical_not()

np.logical_not()会对数组每个元素取逻辑非,不过它返回的是布尔类型数组,要是需要数值型结果,用astype(int)转换即可:

import numpy as np
x = np.array([1,0,1,0,0,1])
y = np.logical_not(x).astype(int)
print(y)  # 输出: [0 1 0 1 1 0]

方法3:按位取反结合位运算(注意适用场景)

按位取反运算符~也能实现,但它是对整数二进制位操作,直接用在int数组上会得到负数(比如~1等于-2),配合& 1保留最低位就能得到0和1的反转:

import numpy as np
x = np.array([1,0,1,0,0,1], dtype=int)
y = (~x) & 1
print(y)  # 输出: [0 1 0 1 1 0]

方法4:使用np.where()条件判断

如果你的数组后续可能出现其他值,np.where()可以精准指定替换规则,灵活性更高:

import numpy as np
x = np.array([1,0,1,0,0,1])
y = np.where(x == 1, 0, 1)
print(y)  # 输出: [0 1 0 1 1 0]

如果只是处理0和1的反转,首推**1 - x**,简洁又高效!

内容的提问来源于stack exchange,提问作者inarighas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:00:21