我有一个包含相同行但列不同的数组列表。 我打印出阵列的形状并检查它们是否有相同的行。
print ("Type x_test : actual",type(x_dump),x_dump.shape, type(actual), actual.shape, pred.shape)
cmp = np.concatenate([x_test,actual,pred],axis = 1)
('Type x_test : actual', <type 'numpy.ndarray'>, (2420L, 4719L), <type 'numpy.ndarray'>, (2420L,), (2420L,))
这给了我一个错误:
ValueError: all the input arrays must have same number of dimensions
我尝试使用以下命令复制此错误:
x.shape,x1.shape,x2.shape
Out[772]: ((3L, 1L), (3L, 4L), (3L, 1L))
np.concatenate([x,x1,x2],axis=1)
Out[764]:
array([[ 0, 0, 1, 2, 3, 0],
[ 1, 4, 5, 6, 7, 1],
[ 2, 8, 9, 10, 11, 2]])
我这里没有任何错误。有人面临类似问题吗?
编辑1:写完这个问题后,我发现尺寸不同。 @Gareth Rees:已经很好地解释了numpy数组(R,1)和(R,)here之间的差异。
修正使用:
# Reshape and concatenate
actual = actual.reshape(len(actual),1)
pred = pred.reshape(len(pred),1)
编辑2:将此答案标记为Difference between numpy.array shape (R, 1) and (R,)的副本。
答案 0 :(得分:-1)
修改
发布后,OP发现了错误。这可以忽略,除非需要看到具有形状(R,1)与(R,)的构造。无论如何,它将为选民提供实践空间。
ORIGINAL
鉴于你的形状,答案是正确的。
a = np.arange(3).reshape(3,1)
b = np.arange(12).reshape(3,4)
c = np.arange(3).reshape(3,1)
np.concatenate([a, b, c], axis=1)
Out[4]:
array([[ 0, 0, 1, 2, 3, 0],
[ 1, 4, 5, 6, 7, 1],
[ 2, 8, 9, 10, 11, 2]])
a
Out[5]:
array([[0],
[1],
[2]])
b
Out[6]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
c
Out[7]:
array([[0],
[1],
[2]])