从两个数组创建numpy数组,使得备用索引包含来自不同数组的元素[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我正在寻找一种快速方法,以下列方式在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)在交替的索引中包含arr1arr2的元素。喜欢,

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

我意识到我可以使用两个for循环来实现这一点,我可以将arr1arr2的元素存储到替代索引(arr3)中。但是,在我的实际工作中,我将处理大型数组(arr1arr2),我想确保我使用一种有效而快速的方法来实现这一功能(即创建arr3

我将非常感谢任何帮助。

python arrays numpy
2个回答
3
投票

这是一种方式。附加或基于堆栈的方法效率低,因为内存未预先分配。当提前确定内存分配时,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]

3
投票

这是另一种方式:

In []:
np.dstack((arr1, arr2)).flatten()

Out[]:
array([  0. ,   0.5,   1. ,   1.5,  11. ,  11.5, 111. , 111.5])
© www.soinside.com 2019 - 2024. All rights reserved.