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

Numpy逻辑切片后维持原始索引、逐位置选取较小值的实现方法

你现有代码的逻辑错误在于np.concatenate会先将所有符合x<=y条件的x元素批量拼接在前,再将所有符合y<x条件的y元素批量拼接在后,完全打乱了原始数组的索引对应顺序,所以无法得到逐位取小的结果。

方案1:使用numpy内置逐元素最小值函数(最高效)

直接调用np.minimum即可实现两个等长数组逐位取较小值,纯向量化实现,性能最优:

import numpy as np
x = np.array([0,12,2,246,13,42,245,235,26,33,235,236,23])
y = np.array([2,2,52,626,143,42,246,2,2,53,35,26,263])

r = np.minimum(x, y)

输出结果为[ 0 2 2 246 13 42 245 2 2 33 35 26 23],符合逐位取小的逻辑。

方案2:使用np.where实现自定义条件选择

如果你需要基于更复杂的判断逻辑做元素选择,可以用np.where,和你原本的判断逻辑完全一致,同时保留原始索引顺序:

r = np.where(x <= y, x, y)

该实现的输出和np.minimum完全一致,同样是向量化操作,性能远高于Python原生for循环,完全可以满足上万条数据的处理需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:03