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

如何在Python中无循环将布尔矩阵的True设为255、False设为0

解决Numpy布尔数组转整数数组的问题

你的问题核心是:布尔类型的Numpy数组无法存储整数值,赋值时会自动将非0值转为True,0转为False,所以输出还是布尔数组。以下是几种无循环的解决方案:

方法1:直接利用布尔值的数值特性(最简洁)

Numpy中布尔值True等价于1,False等价于0,直接乘以255会自动将数组类型转为整数:

import numpy as np

mat1 = np.random.randint(0, 255, size=(1000,1000))
mat2 = np.random.randint(0, 255, size=(1000,1000))
mat_compare = (mat1 == mat2) * 255

方法2:使用np.where(逻辑清晰)

通过np.where直接根据条件生成目标值:

mat_compare = np.where(mat1 == mat2, 255, 0)

方法3:先转换数组类型再赋值

先将布尔数组转为整数类型(比如uint8,适合0-255的范围),再进行赋值:

mat_compare = (mat1 == mat2).astype(np.uint8)
mat_compare[mat_compare == 1] = 255

为什么原代码无效?

mat_compare = (mat1 == mat2)创建的是布尔类型数组,Numpy布尔数组的元素只能是True或False。当你赋值255时,会被自动转换为True;赋值0时转换为False,所以最终输出还是布尔数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:00:00