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

Python一维数组值替换:将指定数值转换为0或1

解决方法

针对你的需求,这里提供几种Python中实现的方式,同时说明你之前可能踩的坑:

普通Python列表的处理

方法1:列表推导式(最简洁推荐)

直接生成符合要求的新列表,代码清晰不易出错:

original_list = [0, 1, 2, 3, 4, 5, 0, 3]
processed_list = [0 if num in {0, 1, 4} else 1 for num in original_list]
print(processed_list)  # 输出: [0, 0, 1, 1, 0, 1, 0, 1]

方法2:通过索引修改原列表

如果你需要直接修改原列表,不要直接遍历列表元素(因为遍历的是元素的副本,修改副本不会影响原列表),要通过索引遍历:

original_list = [0, 1, 2, 3, 4, 5, 0, 3]
for i in range(len(original_list)):
    num = original_list[i]
    if num in {0, 1, 4}:
        original_list[i] = 0
    else:
        original_list[i] = 1
print(original_list)  # 输出: [0, 0, 1, 1, 0, 1, 0, 1]

NumPy数组的处理(如果你的"一维数组"是NumPy数组)

如果用的是NumPy数组,可以用矢量化操作,效率更高:

import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5])
# 方法1:布尔索引赋值
arr[(arr == 0) | (arr == 1) | (arr == 4)] = 0
arr[(arr == 2) | (arr == 3) | (arr == 5)] = 1

# 方法2:np.where更简洁
arr = np.where(np.isin(arr, [0, 1, 4]), 0, 1)
print(arr)  # 输出: [0 0 1 1 0 1]

你之前失败的可能原因

  • 直接遍历列表元素时修改临时变量:比如写for num in original_list: if num... num=0,这里的num是原列表元素的副本,修改它不会改变原列表的内容。
  • 条件判断逻辑错误:比如漏写某个数值,或者条件顺序导致覆盖(比如先把所有符合条件的设为0,再误把部分0又设为1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:47:03