numpy的基础操作2

参考教程

系列视频:https://www.bilibili.com/video/av11263377

继承前文,本文讲重点讲解numpy数组与数组,主要内容包括:

  1. 数组元素顺序的重新排列
  2. 数组的转置操作
  3. 数组的重复操作
  4. 数组的分解和拼接

修改元素排列顺序

1. fliplr

fliplr函数可以将数组左右元素的排列反序(l:left r:right 表示左右),需要注意的是不同维度数组的结果差异,且数组维度必须2维或以上的,其反序在都是在数组的第一纬度上。

2. flipud

fliplr函数可以将数组上下元素的排列反序(u:up,d:down 表示上下)。其反序在都是在数组的第零纬度上。

1
2
3
arr_d2 = np.arange(10).reshape((2,5))
np.fliplr(arr_d2)
np.flipud(arr_d2)

3. roll

循环移动,注意即使是多维数组roll时,仍然以一维的顺序移动

1
2
arr_d2 = np.arange(10).reshape((2,5))
np.roll(arr_d2, -2)

转置操作

1. transpose

transpose转置操作,当数组是二维时默认为矩阵的转置操作,其axis参数可以设置转置维度的排列顺序:

1
2
3
4
5
6
# 两者一样
np.transpose(arr_d2)
arr_d2.T
# 指定顺序
arr_d3 = np.arange(24).reshape((2,3,4))
tra = np.transpose(arr_d3, axes=(2,1,0))

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
2
3
4
arr_d1 = np.arange(10)
np.tile(arr_d1, 3)
np.tile(arr_d1, (3,2))
np.tile(arr_d2, (2,2,2))

2. repeat

repeat函数与tile函数功能类似,不过repeat函数可以指定沿某个轴复制,另外tile复制时是将原有数组得一个维度整体重复复制,而repeat则可以精确到每一个元素。

1
2
arr_d3 = np.arange(24).reshape((2,3,4))
np.repeat(arr_d3, 2, axis=2)

拼接与分解数组

1. concatenate

join操作的一种, 实际上和append的方法类似,但是它允许输入多个数组一起连接:

1
2
3
orig_arr = np.arange(12).reshape(2,2,3)
orig_arr1 = np.arange(112,124).reshape(2,2,3)
con_arr = np.concatenate((orig_arr, orig_arr1, orig_arr), axis=2)

2. split

split函数可以将一个数组划分成几个相等元素个数的子数组,注意设置划分个数时一定号被整除被划分的轴的长度整除

1
2
3
np.split(np.arange(12), 4)
orig_arr = np.arange(12).reshape(2,2,3)
np.split(orig_arr, 2, axis=1)
Compartir