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

如何将NumPy数组按元素是否在指定列表中转换为二值数组

你触发报错的原因是a in l语法是将整个NumPy数组作为单个对象,判断它是否是列表l的元素,而非逐元素判断数组内的每个值是否在l中,NumPy无法直接对多元素数组返回单个布尔值,因此触发了真值歧义的报错。

正确实现可以使用NumPy内置的np.isin()方法,它专门用于逐元素判断数组值是否存在于指定序列中,实现代码如下:

import numpy as np

# 定义输入数组和匹配列表
a = np.array([[23,43,1],[43,5,0],[5,0,0]])
l = [5,43]

# 方法1:直接将布尔结果转为整型,True转1、False转0
result = np.isin(a, l).astype(int)

# 方法2:搭配np.where实现,效果和方法1完全一致
# result = np.where(np.isin(a, l), 1, 0)

执行后result的输出就是你需要的二值数组:

array([[0, 1, 0],
       [1, 1, 0],
       [1, 0, 0]])

如果处理的数组规模非常大,可以提前将匹配列表转为集合类型提升匹配效率,np.isin内部也会自动做类似的优化,普通场景下直接传入列表即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:04