参考教程
系列视频:https://www.bilibili.com/video/av11263377
继承前文,本文讲重点讲解numpy数组与数组,主要内容包括:
- 数组元素顺序的重新排列
- 数组的转置操作
- 数组的重复操作
- 数组的分解和拼接
修改元素排列顺序
1. fliplr
fliplr函数可以将数组左右元素的排列反序(l:left r:right 表示左右),需要注意的是不同维度数组的结果差异,且数组维度必须2维或以上的,其反序在都是在数组的第一纬度上。
2. flipud
fliplr函数可以将数组上下元素的排列反序(u:up,d:down 表示上下)。其反序在都是在数组的第零纬度上。
1 | arr_d2 = np.arange(10).reshape((2,5)) |
3. roll
循环移动,注意即使是多维数组roll时,仍然以一维的顺序移动
1 | arr_d2 = np.arange(10).reshape((2,5)) |
转置操作
1. transpose
transpose转置操作,当数组是二维时默认为矩阵的转置操作,其axis参数可以设置转置维度的排列顺序:
1 | # 两者一样 |
2. swapaxes
交换两个维度:
1 | np.swapaxes(arr_d2, 1, 0) |
3. stack
stack函数它也是对数组指定维度维度上的交换,小于axis参数的维度都会被交换:
1 | ret = np.stack(arr_d3, axis=2) |
4. rollaxis
维度的循环交换:
1 | np.rollaxis(arr_d3, 0, 2) |
重复操作
1. tile
在生成数据时,很可能需要将数据重复多份,在numpy中最常用的重复函数就是tile。
1 | arr_d1 = np.arange(10) |
2. repeat
repeat函数与tile函数功能类似,不过repeat函数可以指定沿某个轴复制,另外tile复制时是将原有数组得一个维度整体重复复制,而repeat则可以精确到每一个元素。
1 | arr_d3 = np.arange(24).reshape((2,3,4)) |
拼接与分解数组
1. concatenate
join操作的一种, 实际上和append的方法类似,但是它允许输入多个数组一起连接:
1 | orig_arr = np.arange(12).reshape(2,2,3) |
2. split
split函数可以将一个数组划分成几个相等元素个数的子数组,注意设置划分个数时一定号被整除被划分的轴的长度整除
1 | np.split(np.arange(12), 4) |