垂直和水平连接numpy数组

时间:2014-03-14 13:55:19

标签: arrays python-2.7 numpy concatenation

我有一个numpy多维数组数组,格式如下:

a  = [[1,2],
      [8,9]]

然后我想在水平和垂直方向添加一个包含3个值的列表(例如[4,5,6]),结果如下:

a = [[1,2,4],
     [8,9,5],
     [4,5,6]]

我是否需要以某种方式组合row_stack和column_stack?

2 个答案:

答案 0 :(得分:3)

以下是使用hstackvstack的方式:

>>> a  = [[1,2],
...       [8,9]]
>>> x = np.array([4, 5, 6])

>>> b = np.vstack((a, x[:-1]))
>>> print np.hstack((b, x[:, None]))
[[1 2 4]
 [8 9 5]
 [4 5 6]]

您可以将其合并为一行:

>>> print np.hstack((np.vstack((a, x[:-1])), x[:, None]))
[[1 2 4]
 [8 9 5]
 [4 5 6]]

答案 1 :(得分:1)

不确定是否有更好的方式(即单行),但你可以这样做:

z = np.zeros((3,3))
z[:2,:2] = a
z[:,2] = z[2,:] = array([4, 5, 6])