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

如何不使用拼接操作按指定索引位置合并两个NumPy数组?

问题解答

这个需求完全可以实现,逻辑非常清晰。
你定义的两个数组本身都是严格升序的,其中array2存储0到358的所有偶数,array1存储95到319、步长为4的所有奇数,两个数组没有重复值,你要求的插入规则本质上就是让合并后的数组保持升序排列。

实现方法

方法1:拼接后直接排序(最简洁)

两个数组无值重叠,合并排序后天然满足插入位置要求,代码如下:

import numpy as np

array1 = np.arange(95, 320, 4)
array2 = np.arange(0, 360, 2)

merged_array = np.sort(np.concatenate([array1, array2]))

可以直接验证你举的示例:

# 查找95在合并后数组的位置
idx_95 = np.where(merged_array == 95)[0][0]
print(merged_array[idx_95 - 1], merged_array[idx_95], merged_array[idx_95 + 1])
# 输出:94 95 96,完全符合插入要求

方法2:定位插入位置后插入(逻辑完全匹配需求描述)

如果需要严格按照“找到array2中对应位置再插入”的逻辑实现,可以用np.searchsorted定位每个array1元素的插入索引,再调用插入方法,结果和方法1完全一致:

# 计算array1每个元素在array2中应该插入的位置
insert_pos = np.searchsorted(array2, array1)
merged_array_v2 = np.insert(array2, insert_pos, array1)

说明:np.searchsorted是针对有序数组设计的方法,返回的索引刚好可以保证插入后数组仍然有序,和你描述的“95插在array2[47]=94和array2[48]=96之间”的规则完全对应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:48:09