如何解决Python按列将一维数组添加到二维数组
我有一个一维数组和二维数组
a = [4,7,10]
b = [[1,2,3],[4,5,6],[7,8,9]]
a.shape = (2,)
b.shape = (3,3)
我想要:
c = [[1,3,4],6,7],9,10]]
c.shape = (3,4)
我尝试了 np.vstack
、np.concenrate
但都失败了
解决方法
您可以使用numpy.column_stack
:
>>> np.column_stack([b,a])
array([[ 1,2,3,4],[ 4,5,6,7],[ 7,8,9,10]])
,
当你尝试一些事情并失败时,你应该展示工作和错误。你可能会在这个过程中学到一些东西。
In [19]: a = np.array([4,7,10])
...: b = np.array([[1,3],[4,6],[7,9]])
In [20]: np.vstack((a,b))
Out[20]:
array([[ 4,10],[ 1,9]])
vstack
有效,但顾名思义,添加了 V。
要水平连接它们,我们需要指定轴 1:
In [28]: np.concatenate((b,a),axis=1)
Traceback (most recent call last):
File "<ipython-input-28-52d167b3d573>",line 1,in <module>
np.concatenate((b,axis=1)
File "<__array_function__ internals>",line 5,in concatenate
ValueError: all the input arrays must have same number of dimensions,but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
vstack
垂直连接它们(轴 0),并根据需要调整尺寸。
但是向 a
添加维度很容易。 reshape
也可以:
In [29]: a[:,None].shape
Out[29]: (3,1)
In [30]: np.concatenate((b,a[:,None]),axis=1)
Out[30]:
array([[ 1,10]])
如果您按照其他答案中的建议查看 column_stack
的代码,您会发现它是这样做的 - 根据需要添加维度。
核心连接函数是concatenate
。学会调整尺寸,你可以做各种连接,而不必记住所有不同的名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。