Python:向numpy 1d数组添加一列

时间:2018-02-27 23:04:09

标签: python arrays python-3.x numpy

我有2个数组。

a = np.zeros(2)
b = np.ones(2)

我想将它们组合起来,使其输出为:

array([[0, 1],
       [0, 1]])

如果我有a = np.zeros((2,1))b = np.zeros((2,1)),可以使用np.hstack((a,b))np.append(a,b,1)完成此操作。但我没有。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用np.c_

>>> a = np.zeros(2); b = np.ones(2)
>>> np.c_[a, b]
array([[0., 1.],
       [0., 1.]])

可替换地:

>>> np.array((a, b), order='F').T
array([[0., 1.],
       [0., 1.]])

此处order='F'确保最终结果为C-contiguous

答案 1 :(得分:2)

您始终可以添加尾随维...

>>> np.hstack([a[:,None], b[:,None]])
array([[ 0.,  1.],
       [ 0.,  1.]])
>>>

答案 2 :(得分:1)

您需要向阵列添加额外维度。

In [2]: a = np.zeros(2)
   ...: b = np.ones(2)
   ...: 

stack可让您选择新维度:

In [3]: np.stack((a,b),axis=1)
Out[3]: 
array([[0., 1.],
       [0., 1.]])

In [4]: np.stack((a,b),axis=0)
Out[4]: 
array([[0., 0.],
       [1., 1.]])

np.array也可以这样做,例如{0} {0} - 转换为获取列:

stack

In [5]: np.array((a,b)).T Out[5]: array([[0., 1.], [0., 1.]]) 是较早的column_stack,也为此案例添加了正确的尺寸。

stack

使用In [6]: np.column_stack((a,b)) Out[6]: array([[0., 1.], [0., 1.]]) 以及您自己添加的维度来学习这项工作是个不错的主意。并查看各种concatenate函数的代码,了解它们如何执行相同的任务。

答案 3 :(得分:0)

你也可以重塑它们:

>>> a, b = np.zeros(2), np.ones(2)
>>> np.hstack([a.reshape(2,1), b.reshape(2,1)])
array([[ 0.,  1.],
       [ 0.,  1.]])