我有两个数组 A = [a1, ..., an] 和 B = [b1, ..., bn]。 我想得到等于
[[a1, b1],
[a2, b2],
...
[an, bn]]
如何使用 numpy.concatenate 实现?
请您参考如下方法:
这个非常简单但最快的解决方案怎么样?
In [73]: a = np.array([0, 1, 2, 3, 4, 5])
In [74]: b = np.array([1, 2, 3, 4, 5, 6])
In [75]: ab = np.array([a, b])
In [76]: c = ab.T
In [77]: c
Out[77]:
array([[0, 1],
[1, 2],
[2, 3],
[3, 4],
[4, 5],
[5, 6]])
但是,作为Divakar pointed out , 使用 np.column_stack直接给出答案,如:
In [85]: np.column_stack([a, b])
Out[85]:
array([[0, 1],
[1, 2],
[2, 3],
[3, 4],
[4, 5],
[5, 6]])
效率(降序)
有趣的是,事实证明我的简单解决方案是最快的。 (比 np.concatenate 快一点,是 np.column_stack 的两倍,是 np.vstack 的三倍)
In [86]: %timeit np.array([a, b]).T
100000 loops, best of 3: 4.44 µs per loop
In [87]: %timeit np.concatenate((a[:,None], b[:,None]), axis=1)
100000 loops, best of 3: 5.6 µs per loop
In [88]: %timeit np.column_stack([a, b])
100000 loops, best of 3: 9.5 µs per loop
In [89]: %timeit np.vstack((a, b)).T
100000 loops, best of 3: 14.7 µs per loop
