选择性堆叠(stack)或转置(transpose):如果你想保留特定的行并减少其他行
时间: 2024-09-23 08:00:45 浏览: 28
当你想在数组中选择性地改变行(秩),比如保持某些特定的维度不动而将另一些维度合并,可以选择使用`numpy`库中的`stack`或`transpose`函数。
**选择性堆叠(stack):**
`np.stack(arrays, axis=axis)`方法允许你沿着指定的`axis`将多个数组堆叠在一起。如果`axis=0`(默认值),它会沿水平方向(行方向)堆叠数组,即增加新的行数。例如,如果你想把一个多维数组的第一维和第二维组合起来,变成一个新的二维数组,可以这样做:
```python
arr_1d = np.array([[1, 2], [3, 4]])
arr_2d = np.stack((arr_1d, arr_1d), axis=0) # 新的数组有两个原始数组按行叠加
```
现在`arr_2d`是一个二维数组,原先是两个一维数组组成的。
**转置(transpose):**
`np.transpose(a, axes=None)`或简写为`a.T`可以交换数组的维度顺序。如果你想要保留某个特定的维度,并将其他的维度顺时针移动,可以设置`axes`参数。例如,如果你的三维数组是`[samples, features, time]`,而你想保持`features`维度不变,将时间轴移到最前面,可以使用:
```python
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 假设 samples = 2, features = 2, time = 1
transposed_array = arr_3d.transpose(2, 0, 1) # 将 time 轴放到最前面, samples 和 features 按顺序排列
```
现在`transposed_array`是一个形状为`(time, samples, features)`的新数组。
阅读全文
相关推荐


















