numpy-将2d数组与1d数组组合

时间:2020-07-15 19:59:09

标签: python arrays numpy

我的用例使我无法使用numpy追加和连接。我想伸出手来确定是否存在一种解决以下挑战的干净方法。

我有两个numpy数组:

a = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]
b = [10, 11, 12]

我想结合起来使它们看起来像这样:

c = [[1, 2, 3, 10],
     [4, 5, 6, 11],
     [7, 8, 9, 12]]

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

最方便的方法是np.c_,它可以智能地处理一维数组:

a = [[1, 2, 3],                                                                                                                                       
     [4, 5, 6],                                                                                                                                       
     [7, 8, 9]]
b = [10, 11, 12]
 
np.c_[a,b]
# array([[ 1,  2,  3, 10],
#        [ 4,  5,  6, 11],
#        [ 7,  8,  9, 12]])

答案 1 :(得分:0)

在香草python中,您可以使用zip进行列表理解:

out = [u+[v] for u,v in zip(a,b)]
# [[1, 2, 3, 10], [4, 5, 6, 11], [7, 8, 9, 12]]

但是由于您标记了numpy,因此可以像这样使用hstack

np.hstack((a,np.array([b]).T))

array([[ 1,  2,  3, 10],
       [ 4,  5,  6, 11],
       [ 7,  8,  9, 12]])

答案 2 :(得分:0)

您应该尝试:

a = [[1,2,3],[4,5,6],[7,8,9]]
b = [10,11,12]
for k in range(len(a)):
    a[k].append(b[k])

我不确定这在任何情况下都可以使用,但至少可以在该示例中使用。但是,它不使用Numpy,它也适用于Python列表。

答案 3 :(得分:0)

除了其他答案,您还提到了numpyconcatenate
这是使用它们的方法:

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([10, 11, 12])

print(np.concatenate((a, b.reshape((-1, 1))), axis=1))
[[ 1  2  3 10]
 [ 4  5  6 11]
 [ 7  8  9 12]]