我的用例使我无法使用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]]
任何帮助将不胜感激。
答案 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)
除了其他答案,您还提到了numpy
和concatenate
,
这是使用它们的方法:
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]]