• 欢迎光临~

# numpy - 数组的切片

```import numpy as np
# 创建一个多维数组
arr = np.random.randint(0,100,size=(5,5))
arr
```

在这里，我们创建了一个五行五列的二维数组

```array([[10,  7, 83, 66,  5],
[30, 12, 87,  2, 71],
[75, 96, 36,  5, 62],
[73, 25, 72, 22, 27],
[ 2,  5, 52, 17, 93]])```

一维数组的切片 arr[x ： y ：z]

x : 起始值，y : 结束值，z : 步长值

```# 将数组的行倒置
arr[::-1]
array([[ 2,  5, 52, 17, 93],
[73, 25, 72, 22, 27],
[75, 96, 36,  5, 62],
[30, 12, 87,  2, 71],
[10,  7, 83, 66,  5]])
```

```# 将数组的行和列倒置
arr[::-1,::-1]
array([[93, 17, 52,  5,  2],
[27, 22, 72, 25, 73],
[62,  5, 36, 96, 75],
[71,  2, 87, 12, 30],
[ 5, 66, 83,  7, 10]])
```

```# 取出后三行（从第三行开始取）
arr[2::]
array([[75, 96, 36,  5, 62],
[73, 25, 72, 22, 27],
[ 2,  5, 52, 17, 93]])
```

```# 取出前两行
arr[:2:]
array([[10,  7, 83, 66,  5],
[30, 12, 87,  2, 71]])
```

```# 取出 1 2 5 行
arr[::2]
array([[10,  7, 83, 66,  5],
[75, 96, 36,  5, 62],
[ 2,  5, 52, 17, 93]])
```

```# 取出后三列（从第三列开始取）
arr[::,2::]
array([[83, 66,  5],
[87,  2, 71],
[36,  5, 62],
[72, 22, 27],
[52, 17, 93]])
```

```# 取出后两列
arr[::,:2:]
array([[10,  7],
[30, 12],
[75, 96],
[73, 25],
[ 2,  5]])
```

```# 取出 1 3 5 列
arr[::,::2]
array([[10, 83,  5],
[30, 87, 71],
[75, 36, 62],
[73, 72, 27],
[ 2, 52, 93]])
```

这里展示一个数组切片的小应用案例

```import matplotlib.pyplot as plt
# 读取本地图片的二进制数据
imgData
array([[[187, 218, 247],
[187, 218, 247],
[187, 218, 247],
...,
[187, 218, 247],
[187, 218, 247],
[187, 218, 247]],

[[182, 215, 246],
[182, 215, 246],
[182, 215, 246],
...,
[182, 215, 246],
[182, 215, 246],
[182, 215, 246]],

[[182, 215, 246],
[182, 215, 246],
[182, 215, 246],
...,
[182, 215, 246],
[182, 215, 246],
[182, 215, 246]],

...,

[[253, 253, 253],
[253, 253, 253],
[253, 253, 253],
...,
[253, 253, 253],
[253, 253, 253],
[252, 252, 252]],

[[253, 253, 253],
[253, 253, 253],
[253, 253, 253],
...,
[253, 253, 253],
[253, 253, 253],
[252, 252, 252]],

[[253, 253, 253],
[253, 253, 253],
[253, 253, 253],
...,
[253, 253, 253],
[253, 253, 253],
[252, 252, 252]]], dtype=uint8)
```

不难看出，读取的数据是存放在一个二维数组里面的

```# 图片二进制数据展示
plt.imshow(imgData)```

```# 数组切片操作可以对图片进行剪切操作
plt.imshow(imgData[:300:])```

还可完成的操作有 图片的反转，倒置，放大，缩小等，这里就不做相应演示了