Python:向numpy 1d数组添加列

Python:向numpy 1d数组添加列,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,我有两个数组 a = np.zeros(2) b = np.ones(2) 我希望将它们合并,以便其输出为: array([[0, 1], [0, 1]]) 如果我有a=np.zero((2,1))和b=np.zero((2,1)),这可以通过np.hstack((a,b))或np.append(a,b,1)完成。但我没有 有什么想法吗?你可以使用np.c >>> a = np.zeros(2); b = np.ones(2) >>> np.

我有两个数组

a = np.zeros(2)
b = np.ones(2)
我希望将它们合并,以便其输出为:

array([[0, 1],
       [0, 1]])
如果我有
a=np.zero((2,1))
b=np.zero((2,1))
,这可以通过
np.hstack((a,b))
np.append(a,b,1)
完成。但我没有


有什么想法吗?

你可以使用
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-连续的

您始终可以添加尾随维度

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

您还可以对其进行重塑:

>>> a, b = np.zeros(2), np.ones(2)
>>> np.hstack([a.reshape(2,1), b.reshape(2,1)])
array([[ 0.,  1.],
       [ 0.,  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进行
stack
转换以获得列:

In [5]: np.array((a,b)).T
Out[5]: 
array([[0., 1.],
       [0., 1.]])
column\u stack
是一个较旧的
stack
,它也为这种情况添加了正确的维度

In [6]: np.column_stack((a,b))
Out[6]: 
array([[0., 1.],
       [0., 1.]])

学习使用
连接和您自己添加的维度来实现这一点是个好主意。查看各种
堆栈
函数的代码,看看它们是如何完成相同任务的。

解决方案就在眼前。添加所需的尺寸。或者懒惰地使用一个为您添加它们的函数。