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

Python中根据另一数组的条件修改指定数组元素的实现问题

解决方案

你可以通过两种高效的NumPy向量化操作实现需求,且不会修改原数组,结果存入新变量:

方法一:布尔索引+副本修改

先创建原数组的副本,再通过布尔掩码定位需要修改的位置并更新:

import numpy as np

y1 = [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1]
y2 = [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1]
y1_a = np.array(y1)
y2_a = np.array(y2)

# 创建y2_a的副本作为初始新数组
y_modified = y2_a.copy()

# 生成布尔掩码:筛选y1_a为1且y2_a为0的位置
mask = (y1_a == 1) & (y2_a == 0)

# 更新符合条件的位置为1
y_modified[mask] = 1

# 输出结果
print("原y2_a数组:")
print(y2_a)
print("修改后的数组:")
print(y_modified)

方法二:np.where一步生成

利用np.where函数直接根据条件生成新数组,代码更简洁:

import numpy as np

y1 = [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1]
y2 = [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1]
y1_a = np.array(y1)
y2_a = np.array(y2)

# 条件满足时取1,否则保留y2_a原值
y_modified = np.where((y1_a == 1) & (y2_a == 0), 1, y2_a)

# 输出结果
print("原y2_a数组:")
print(y2_a)
print("修改后的数组:")
print(y_modified)

结果说明

两种方法得到的修改后数组均为:[1 0 0 0 1 0 1 0 0 0 0 1 1 1],仅更新了y1_a为1且y2_a为0的位置,其余位置保持原y2_a的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:16