np.hstack 和 np.vstack的例子
时间: 2024-08-14 12:06:43 浏览: 80
`np.hstack()` 和 `np.vstack()` 是 NumPy 库中用于数组操作的两个函数。它们分别用于水平堆叠 (Horizontal Stacking) 和垂直堆叠 (Vertical Stacking)。
1. **np.hstack()**:这个函数将一维数组或形状相同的列向量沿着水平方向连接成一个二维数组。例如:
```python
import numpy as np
arr1 = np.array([1, 2])
arr2 = np.array([3, 4, 5])
hstack_example = np.hstack((arr1, arr2))
print(hstack_example) # 输出:[1 2 3 4 5]
```
在这个例子中,`arr2` 被添加到了 `arr1` 的右边。
2. **np.vstack()**:相反,`vstack()` 将一维数组或形状相同的行向量沿着垂直方向堆叠起来形成一个二维数组。比如:
```python
row1 = np.array([[1, 2]])
row2 = np.array([[3, 4]])
vstack_example = np.vstack((row1, row2))
print(vstack_example) # 输出:[[1 2]
# [3 4]]
```
这里,`row2` 添加到了 `row1` 的下面。
相关问题
cols1 和cols2是二维数组,使用np.array()将两数组拼接起来
当你有两个二维数组 `cols1` 和 `cols2`,想要将它们合并成一个新的二维数组时,可以使用 `numpy` 的 `vstack` 或 `hstack` 函数,而不是直接调用 `np.array()`。因为 `np.array()` 主要是用于创建数组,而非组合数组。
如果你想垂直堆叠 (即按行添加) 这两个数组,应该使用 `np.vstack((cols1, cols2))`。这会把 `cols1` 的所有行放在 `cols2` 的所有行下面。
如果你想要水平堆叠 (即按列添加),则用 `np.hstack((cols1, cols2))`。这样会在每列上将两个数组并排放置。
这里是一个例子:
```python
import numpy as np
# 假设 cols1 = [[1, 2], [3, 4]] 和 cols2 = [[5, 6], [7, 8]]
cols1 = np.array([[1, 2], [3, 4]])
cols2 = np.array([[5, 6], [7, 8]])
# 水平堆叠
combined_cols_hstack = np.hstack((cols1, cols2))
# 输出:array([[1, 2, 5, 6],
# [3, 4, 7, 8]])
# 垂直堆叠
combined_cols_vstack = np.vstack((cols1, cols2))
# 输出:array([[1, 2],
# [3, 4],
# [5, 6],
# [7, 8]])
```
hstack ,vstack
`hstack` 和 `vstack` 是 NumPy 中的函数,用于水平(horizontal)和垂直(vertical)方向上的数组拼接。
`hstack` 函数将多个数组按水平方向堆叠在一起,即将它们沿着第二个轴(列方向)拼接起来。例如,假设我们有两个形状为 (3, 2) 的数组 `a` 和 `b`,可以使用 `hstack` 函数将它们水平拼接:
```python
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([[7, 8], [9, 10], [11, 12]])
c = np.hstack((a, b))
print(c)
# 输出:
# [[ 1 2 7 8]
# [ 3 4 9 10]
# [ 5 6 11 12]]
```
`vstack` 函数将多个数组按垂直方向堆叠在一起,即将它们沿着第一个轴(行方向)拼接起来。例如,假设我们有两个形状为 (2, 3) 的数组 `a` 和 `b`,可以使用 `vstack` 函数将它们垂直拼接:
```python
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])
c = np.vstack((a, b))
print(c)
# 输出:
# [[ 1 2 3]
# [ 4 5 6]
# [ 7 8 9]
# [10 11 12]]
```
需要注意的是,拼接的数组的维度必须相同,除了沿着拼接方向的那个维度之外。在上面的例子中,`a` 和 `b` 的第二个维度(列数)相同,所以可以使用 `hstack` 拼接它们;`a` 和 `b` 的第一个维度(行数)相同,所以可以使用 `vstack` 拼接它们。如果维度不相同,会引发 `ValueError` 异常。
阅读全文