所以我想将两个数组串联起来,但是要成对。输入如下:
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])
输出应该如下:
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]]
我设法通过遍历两个数组来获得这样的结果
out_put = [[a[i],b[i]] for i in range(len(a)]
但是我想知道是否还有更快的方法。
谢谢
答案 0 :(得分:3)
对于矢量化解决方案,您可以堆叠和转置:
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]])
答案 1 :(得分:3)
将一维数组堆叠为二维数组中的列。
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]])
答案 2 :(得分:2)
您可以使用zip
函数来组合任意两个可迭代对象,如下所示。它会一直持续到到达较短的可迭代结束为止
list(zip(a, b))
# [(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)]