成对组合来自两个数组的元素

ham*_*iqi 7 python arrays numpy python-3.x

所以我想连接两个数组但成对。输入如下:

a = array([1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
b = array([0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

out_put = 
[[1, 0],
[1, 0],
[0, 1],
[1, 0],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[0, 1],
[1, 0]]
Run Code Online (Sandbox Code Playgroud)

我设法通过迭代两个数组来获得这样的结果

out_put = [[a[i],b[i]] for i in range(len(a)]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更快的方法。

谢谢

jpp*_*jpp 6

对于矢量化解决方案,您可以堆叠和转置:

a = np.array([1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
b = np.array([0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0])

c = np.vstack((a, b)).T
# or, c = np.dstack((a, b))[0]

array([[1, 0],
       [1, 0],
       [0, 1],
       [1, 0],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

  • @BradSolomon `column_stack` 是 `dstack` 没有为 2 个一维数组添加额外的维度 (2认同)

use*_*203 5

使用np.column_stack

将一维数组作为列堆叠到二维数组中。

np.column_stack((a, b))

array([[1, 0],  
       [1, 0],  
       [0, 1],  
       [1, 0],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [0, 1],  
       [1, 0]]) 
Run Code Online (Sandbox Code Playgroud)