在Numpy Python中将一个一维数组追加到一个二维数组中

21
我有一个 numpy 的二维数组 [[1,2,3]]。我需要将一个 numpy 的一维数组(比如 [4,5,6])附加到它上面,使其变成 [[1,2,3], [4,5,6]]
在使用列表时,这很容易实现,只需在二维列表上调用 append 函数即可。
但是,在 Numpy 数组中该怎么做呢? np.concatenatenp.append 都不行。由于某种原因,它们将该数组转换为一维数组。
谢谢!

vstack 做的是 np.concatenate([np.atleast_2d(m) for m in tup], 0) - 换句话说 - 确保所有输入都是二维的,然后再进行连接。 - hpaulj
2个回答

17

你想要 vstack

In [45]: a = np.array([[1,2,3]])

In [46]: l = [4,5,6]

In [47]: np.vstack([a,l])
Out[47]: 
array([[1, 2, 3],
       [4, 5, 6]])

只有在 除了第一个轴之外的所有轴上,数组的形状必须相同 的条件下才能堆叠多个行。

In [53]: np.vstack([a,[[4,5,6], [7,8,9]]])
Out[53]: 
array([[1, 2, 3],
       [4, 5, 6],
       [4, 5, 6],
       [7, 8, 9]])

2
然而,它与hstack的工作方式不同...需要使用col_vector_to_append = np.column_stack([4, 5, 6]).T - Mehdi
@Mehdi,vstack肯定是hstack的转置版本,对吧? - Gordon Bai

0

试试这个:

np.concatenate(([a],[b]),axis=0)

a = np.array([1,2,3])
b = np.array([4,5,6])

那么结果应该是:

array([[1, 2, 3], [4, 5, 6]])


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接