我正在寻找一种快速方法,以下列方式在python中合并两个numpy数组。例如,如果我有以下两个数组,
arr1 = np.array([0.0, 1.0, 11.0, 111.0])
arr2 = np.array([0.5, 1.5, 11.5, 111.5])
然后我希望合并的数组(比如arr3
)在交替索引中包含arr1
和arr2
的元素。像,
arr3 = np.array([0.0, 0.5, 1.0, 1.5, 11.0, 11.5, 111.0, 111.5])
我意识到我可以使用两个for循环来实现这一点,我可以将arr1
和arr2
的元素存储到备用索引(arr3
)中。但是,在我的实际工作中,我将处理大型数组(arr1
和arr2
),我想确保我使用高效快速的方法来实现此功能(即创建arr3
)
我将非常感谢任何帮助。
答案 0 :(得分:4)
这是一种方式。附加或基于堆栈的方法效率低,因为内存未预先分配。当提前确定内存分配时,numpy
数组的操作效果最佳。
arr1 = np.array([0.0, 1.0, 11.0, 111.0])
arr2 = np.array([0.5, 1.5, 11.5, 111.5])
arr3 = np.zeros(arr1.shape[0] + arr2.shape[0], dtype=arr1.dtype)
arr3[::2] = arr1
arr3[1::2] = arr2
print(arr3)
[ 0. 0.5 1. 1.5 11. 11.5 111. 111.5]
答案 1 :(得分:3)
这是另一种方式:
In []:
np.dstack((arr1, arr2)).flatten()
Out[]:
array([ 0. , 0.5, 1. , 1.5, 11. , 11.5, 111. , 111.5])