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

如何高效将两个NumPy数组合并为元素交替排列的新数组?

高效交替合并两个NumPy数组的方法

嘿,针对你处理超大NumPy数组的需求,完全不用写循环——NumPy原生就有好几种高效的方法,都是底层C实现,速度拉满还省内存,给你整理几个最实用的:

方法1:用stack快速堆叠展平

这是最简洁的写法,一行就能搞定:

import numpy as np

arr1 = np.array([0.0, 1.0, 11.0, 111.0])
arr2 = np.array([0.5, 1.5, 11.5, 111.5])

arr3 = np.stack([arr1, arr2], axis=1).ravel()

原理很直观:stack([arr1, arr2], axis=1)会把两个数组按列堆叠成一个(4,2)的二维数组,接着ravel()把它展平成一维,正好就是你要的交替排列结果。

方法2:预分配空间切片赋值(超大数组首选)

如果你的数组真的特别大,担心中间数组占用额外内存,这种方法更友好——直接预分配结果数组的空间,再用切片批量赋值:

arr3 = np.empty((arr1.size + arr2.size,), dtype=arr1.dtype)
arr3[::2] = arr1  # 偶数索引位置放arr1的元素
arr3[1::2] = arr2 # 奇数索引位置放arr2的元素

这种方法完全没有中间数组的创建,内存开销最小,速度也非常快,适合处理GB级别的超大数组。

方法3:concatenate + reshape组合

和第一种方法思路类似,换一种写法实现:

arr3 = np.concatenate([arr1, arr2]).reshape(2, -1).T.ravel()

先把两个数组合并成一个长一维数组,再重塑成(2,4)的二维数组,转置后展平,同样能得到交替排列的结果。

这几种方法都比循环快几个数量级,完全适配你处理超大数组的需求,选哪个看你的代码风格和内存情况就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:46:42