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

如何用Numpy无循环交替合并两个一维数组

用Numpy无循环实现两个一维数组交替合并

假设我们有两个长度相同的一维Numpy数组:

import numpy as np

xs1 = np.array([x0, x1, x2, x3, x4, x5, x6, x7, x8])
xs2 = np.array([x00, x01, x02, x03, x04, x05, x06, x07, x08])

需要将它们交替取元素合并为:

xs = np.array([x0, x00, x1, x01, x2, x02, x3, x03, x4, x04, x5, x05, x6, x06, x7, x07, x8, x08])

下面是几种无需for循环的Numpy实现方式:

方法1:列堆叠+扁平化

利用np.column_stack将两个数组按列组合成二维数组,再用flatten()展开为一维:

xs = np.column_stack((xs1, xs2)).flatten()

原理:column_stack会把两个一维数组转换为9行2列的二维数组(每行对应原数组同位置的元素对),扁平化后自然得到交替排列的结果。

方法2:垂直堆叠+按列展开

用np.vstack垂直堆叠数组,再通过ravel('F')按列优先顺序展开:

xs = np.vstack((xs1, xs2)).ravel('F')

原理:vstack生成2行9列的二维数组,ravel('F')会按列遍历元素,依次取第一列的两个元素、第二列的两个元素……最终实现交替合并。

方法3:拼接+重塑+转置+扁平化

先拼接两个数组,再重塑形状后转置,最后扁平化:

xs = np.concatenate((xs1, xs2)).reshape(2, -1).T.flatten()

原理:concatenate先把两个数组合并成一个长度为18的一维数组,reshape(2, -1)将其转为2行9列的二维数组,转置后变成9行2列,扁平化后得到目标顺序。

这些方法都基于Numpy的向量化操作,避免了显式循环,在处理大规模数组时效率远高于循环实现。

内容的提问来源于stack exchange,提问作者Andrei M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:27:09