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

如何对NumPy布尔数组的整行/整列执行NOT操作?

在NumPy中对布尔数组的整行/整列执行NOT操作的方法

当然可以实现!在NumPy里处理布尔数组的取反操作非常直接,你设想的matrix[:,1].not()虽然不是正确语法,但我们有更简洁的方式达成目标。

先来看你的初始矩阵:

import numpy as np

matrix = np.array([[False for i in range(3)] for j in range(2)])

它的输出是:

[[False False False]
 [False False False]]

对整列执行取反操作

要对第1列(注意NumPy使用0-based索引,这里的第1列对应索引1)取反,你有两种常用方法:

方法1:使用~按位取反操作符(最简洁)

直接对目标列原地修改:

matrix[:, 1] = ~matrix[:, 1]

方法2:使用np.logical_not()函数

如果你更喜欢显式的函数调用风格,也可以这样写:

matrix[:, 1] = np.logical_not(matrix[:, 1])

执行任意一种操作后,矩阵会变成你期望的结果:

[[False  True False]
 [False  True False]]

对整行执行取反操作

同理,若要对某一行取反,比如第0行,只需把索引切换到行维度:

# 对第0行原地取反
matrix[0, :] = ~matrix[0, :]

额外提示:非原地修改(生成新数组)

如果你不想改动原矩阵,而是生成一个独立的新数组,可以先复制原矩阵再操作:

new_matrix = matrix.copy()
new_matrix[:, 1] = ~new_matrix[:, 1]

这样原矩阵会保持初始状态,新矩阵则是取反后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:42:55