我有两个numpy形状的数组
(129873, 12)
(129873,)
我想连接这些,所以它们的形状为:
(129873, 13)
我尝试了numpy.concatenate
和numpy.vstack
,但似乎遇到了错误:
ValueError:所有输入数组必须具有相同的维数
有关如何执行此操作的任何建议?
答案 0 :(得分:2)
我认为这已经在这里得到了解答:
Numpy: Concatenating multidimensional and unidimensional arrays
import numpy
a = numpy.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]])
b = numpy.array([5, 6, 6])
c = numpy.column_stack((a,b))
print a
print b
print c
print a.shape
print b.shape
print c.shape
这会给你:
[[1 2 3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]]
[5 6 6]
[[1 2 3 4 5 5]
[1 2 3 4 5 6]
[1 2 3 4 5 6]]
(3, 5)
(3,)
(3, 6)
答案 1 :(得分:1)
所以一个数组有2个维度,另一个数组有1个:
(129873, 12)
(129873,)
您需要将第2个更改为具有(129873,1)
形状。然后你可以在轴1上连接。
有很多方法可以做到这一点。我最喜欢[:,None]
或np.newaxis
索引:
In [648]: A=np.ones((3,4),int)
In [649]: B=np.ones((3,),int)
In [650]: B[:,None].shape
Out[650]: (3, 1)
In [651]: np.concatenate((A,B[:,None]),axis=1).shape
Out[651]: (3, 5)
B.reshape(-1,1)
也有效。还有np.atleast_2d(B).T
和np.expand_dims(B,1)
。
np.column_stack((A,B))
使用np.array(arr, copy=False, subok=True, ndmin=2).T
来确保每个数组都有正确数量的维度。
虽然concatenate
有column_stack
的友好封面,但了解如何直接更改尺寸非常重要。