Skip to main content
 首页 » 编程设计

python之如何在 NumPy 中连接两个一维数组

2025年05月04日26myhome

我有两个数组 A = [a1, ..., an] 和 B = [b1, ..., bn]。 我想得到等于

的新矩阵 C
[[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