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

如何仅覆盖Numpy数组中等于指定值的部分元素?

解决方案

错误原因

你编写的代码存在语法和逻辑错误:New_X1 = [np.where(X1==1)]= X2属于错误的连续赋值写法,既没有正确初始化New_X1为原始X1的拷贝,也没有对数组的目标位置做正确赋值。

正确实现方式

首先需要保证X2的长度和X1中值为1的元素数量完全一致(你给出的示例满足该前提),可以选择以下两种常用实现方法:

方法1:布尔索引(更简洁)

直接通过布尔掩码定位X1中值为1的位置,赋值为X2的对应值:

import numpy as np

# 初始化原始数组
X1 = np.array([1, 0, 1, 2, 3, 1, 3, 2, 3, 1, 0])
X2 = np.array([-1, 1, -1, -1])

# 复制原始数组避免修改原X1
New_X1 = X1.copy()
# 对符合条件的位置赋值
New_X1[X1 == 1] = X2

print(New_X1)

运行输出结果:
[-1 0 1 2 3 -1 3 2 3 -1 0]

方法2:使用np.where

如果需要显式通过索引定位,正确的np.where写法如下:

New_X1 = X1.copy()
New_X1[np.where(X1 == 1)] = X2

两种方法的运行结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:39:02