繁体   English   中英

Python:将列添加到numpy 1d数组

[英]Python: Add a column to numpy 1d array

我有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) 但是我没有。

有什么想法吗?

您可以使用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

您可以随时添加尾随尺寸...

>>> np.hstack([a[:,None], b[:,None]])
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也这样做,就像stack与轴0 -转来获取列:

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和自己的另外的维度。 并查看各种stack函数的代码,以了解它们如何完成相同的任务。

您还可以重塑它们:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM