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.]])
学习使用
连接和您自己添加的维度来实现这一点是个好主意。查看各种堆栈
函数的代码,看看它们是如何完成相同任务的。解决方案就在眼前。添加所需的尺寸。或者懒惰地使用一个为您添加它们的函数。