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

Numpy中满足指定条件时替换整行的实现问题求助

问题原因

原代码的np.where采用逐元素匹配逻辑,values == [z, ]仅会标记第一列等于z的位置为真,第二列所有位置判定为假,因此只有第一列对应位置会被替换,第二列保持原值,无法实现整行替换的需求。

最优实现方案

直接使用NumPy布尔索引选中符合条件的行,再整行赋值即可,代码更简洁高效:

import numpy as np
values = np.array([[10, 10],
     [11, 10],
     [12, 10],
     [13, 10],
     [14, 10]])
z = 13
x = 1
y = 0
# 选中第一列等于z的所有行,直接整行赋值
values[values[:, 0] == z] = [x, y]
基于原np.where写法的修改方案

如果需要保留np.where的写法,需要将布尔条件扩展为和原数组同维度的矩阵,让满足条件的整行位置都为真:

import numpy as np
values = np.array([[10, 10],
     [11, 10],
     [12, 10],
     [13, 10],
     [14, 10]])
z = 13
x = 1
y = 0
# 将一维布尔条件扩展为二维,匹配原数组维度
mask = np.repeat((values[:, 0] == z)[:, np.newaxis], values.shape[1], axis=1)
values = np.where(mask, np.array([x, y]), values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:03