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

如何用布尔数组操作NumPy数组元素(无需迭代)

如何用布尔数组操作NumPy数组元素(无需迭代)

嘿,这个需求用NumPy自带的布尔索引就能完美解决,完全不用手动写循环,效率还高得飞起!

你只需要一行核心代码就能搞定:

to_change[true_false] *= 20

给你完整的可运行示例,跑一下就能直观看到效果:

import numpy as np

true_false = np.array([[True, False], [True, False]])
to_change = np.array([[10, 10], [10, 10]])

# 通过布尔索引定位需要修改的元素,直接原地乘20
to_change[true_false] *= 20

print(to_change)

执行后输出的结果会是:

[[200  10]
 [200  10]]

原理其实很简单:NumPy原生支持用布尔数组作为索引,当你把true_false放到to_change的索引位置时,会自动筛选出所有true_false里值为True对应的to_change元素,然后对这些元素统一执行乘法操作。这种向量化操作是NumPy的核心优势,底层是用优化过的C代码实现的,比手动写Python循环快得多——尤其是处理大数组的时候,性能差距会特别明显。

如果你不习惯原地修改的写法,也可以换成这种形式,效果完全一致:

to_change[true_false] = to_change[true_false] * 20

备注:内容来源于stack exchange,提问作者flameshooter09

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:47:41