x = np.array([11,22,33]) y = np.array([18,7,6]) z = np.array([1,3,5]) c = np.concatenate((x,y,z),axis = 1) print(c)为什么运行失败呢
时间: 2024-10-24 07:11:08 浏览: 23
系统更新-在keras中利用np.random.shuffle()打乱数据集实例
当你尝试将`x`, `y`, 和 `z` 按照`axis=1`(即列方向)拼接在一起时,`np.concatenate`函数会预期输入的每个数组都有相同的列数,以便可以沿着这一维度合并。然而,在这个例子中:
- `x`是一个长度为2的一维数组,有两个元素(11, 22, 33)。
- `y`同样是一个长度为3的一维数组,有三个元素(18, 7, 6)。
- `z`也是一个长度为3的一维数组,也有三个元素(1, 3, 5)。
由于`x`和`y`的第一列已经有3个元素了,而`z`只有3个元素,因此当你试图把这三个一维数组放在同一列(`axis=1`)时,`z`的最后一个元素会被插入到`x`和`y`的中间,导致列数不匹配,这就会引发错误。
正确的做法是先将它们转换为具有相同列数的二维数组,通常是将每个一维数组转置(`T`或`.T`),然后再进行拼接。例如:
```python
x = x.reshape(-1, 1)
y = y.reshape(-1, 1)
z = z.reshape(-1, 1)
c = np.concatenate((x, y, z), axis=1)
print(c)
```
这样,你会得到一个三列的二维数组,每一行都是之前的一维数组对应位置的值。
阅读全文