• 欢迎光临~

numpy - 数组的切片

开发技术 开发技术 2022-10-06 次浏览

导入数组的常用模块

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 = plt.imread('E:/pandas/imges/bg.jpg')
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)
numpy - 数组的切片

 

 

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

 

 

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

程序员灯塔
转载请注明原文链接:numpy - 数组的切片
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com