从两个数组创建numpy数组,以便替代索引包含来自不同数组的元素

时间:2018-05-14 23:52:25

标签: python arrays numpy

我正在寻找一种快速方法,以下列方式在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

我将非常感谢任何帮助。

2 个答案:

答案 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])