我有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)
完成此操作。但我没有。
有什么想法吗?
答案 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.]])