如果我从一个3×4阵列开始,并连接一个3×1阵列,轴1,我得到一个3×5阵列:
In [911]: x = np.arange(12).reshape(3,4)
In [912]: np.concatenate([x,x[:,-1:]], axis=1)
Out[912]:
array([[ 0, 1, 2, 3, 3],
[ 4, 5, 6, 7, 7],
[ 8, 9, 10, 11, 11]])
In [913]: x.shape,x[:,-1:].shape
Out[913]: ((3, 4), (3, 1))
请注意,连接的两个输入都有2个维度.
省略:,而x [:, – 1]是(3,)形状 – 它是1d,因此错误:
In [914]: np.concatenate([x,x[:,-1]], axis=1)
...
ValueError: all the input arrays must have same number of dimensions
np.append的代码是(在这种情况下指定了axis)
return concatenate((arr, values), axis=axis)
因此,稍微更改语法附加工作.而不是列表,它需要2个参数.它模仿list append是语法,但不应该与list方法混淆.
In [916]: np.append(x, x[:,-1:], axis=1)
Out[916]:
array([[ 0, 1, 2, 3, 3],
[ 4, 5, 6, 7, 7],
[ 8, 9, 10, 11, 11]])
np.hstack首先确保所有输入都是atleast_1d,然