如何使用NumPy处理数组翻转与变形

发布于:2024-04-07 ⋅ 阅读:(113) ⋅ 点赞:(0)

NumPy是Python中一个强大的库,主要用于处理大型多维数组和矩阵的数学运算。处理数组翻转与变形是NumPy的常用功能。

1.对多维数组翻转

n = np.random.randint(0,100,size=(5,6))n# 执行结果array([[ 9, 48, 20, 85, 19, 93],       [ 1, 63, 20, 25, 19, 44],       [15, 70, 12, 58,  4, 11],       [85, 51, 86, 28, 31, 27],       [64, 15, 33, 97, 59, 56]])       # 行翻转n[::-1]# 执行结果array([[64, 15, 33, 97, 59, 56],       [85, 51, 86, 28, 31, 27],       [15, 70, 12, 58,  4, 11],       [ 1, 63, 20, 25, 19, 44],       [ 9, 48, 20, 85, 19, 93]])       # 列翻转:相对于是对第二个维度做翻转n[:,::-1]# 执行结果array([[93, 19, 85, 20, 48,  9],       [44, 19, 25, 20, 63,  1],       [11,  4, 58, 12, 70, 15],       [27, 31, 28, 86, 51, 85],       [56, 59, 97, 33, 15, 64]])

2.把图片翻转

# 数据分析三剑客import numpy as npimport pandas as pdimport matplotlib.pyplot as plt# python.png# 图片:其实时数字组成的,三维数组# RGB:红Red,绿Green,蓝Blue# RGB范围:0-255# plt.imread:读取图片的数据pyimg = plt.imread("python.png")pyimg# 显示原图plt.imshow(pyimg)# 行翻转:上下翻转plt.imshow(pyimg[::-1])# 列翻转:左右翻转plt.imshow(pyimg[:,::-1])# 对颜色翻转:RGB => BGRplt.imshow(pyimg[:,:,::-1])# 模糊处理plt.imshow(pyimg[::10,::10,::-1])

3.数组变形

  • 使用reshape函数

# 创建一个20个元素的一维数组n = np.arange(1,21)n# 执行结果array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,       18, 19, 20])# 查看形状print(n.shape)# 执行结果(20,)# reshape:将数组改变形状# 将n变成4行5列的二维数组n2 = np.reshape(n,(4,5))print(n2)# 执行结果[[ 1  2  3  4  5] [ 6  7  8  9 10] [11 12 13 14 15] [16 17 18 19 20]]   print(n2.shape)# 执行结果(4, 5) # 将n2变成5行4列的二维数组# n2.reshape(5,4)print(n2.reshape((5,4)))# 执行结果[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12] [13 14 15 16] [17 18 19 20]]# 注意:变形的过程中需要保持元素个数一致# n2.reshape((5,5))   # 20个元素变形成25个则报错# 还原成一维数组print(n2.reshape(20))# 执行结果[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]print(n2.reshape(-1))# 执行结果[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]# 使用-1:表示任意剩余维度长度print(n2.reshape(4,-1))# 执行结果[[ 1  2  3  4  5] [ 6  7  8  9 10] [11 12 13 14 15] [16 17 18 19 20]] print(n2.reshape(5,-1))# 执行结果[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12] [13 14 15 16] [17 18 19 20]] print(n2.reshape(-1,2))# 执行结果[[ 1  2] [ 3  4] [ 5  6] [ 7  8] [ 9 10] [11 12] [13 14] [15 16] [17 18] [19 20]] print(n2.reshape(-1,1))# 执行结果[[ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]]# 不能使用两个-1# print(n2.reshape(-1,-1))n2.reshape(2,-1,2)# 执行结果array([[[ 1,  2],        [ 3,  4],        [ 5,  6],        [ 7,  8],        [ 9, 10]],       [[11, 12],        [13, 14],        [15, 16],        [17, 18],        [19, 20]]])


网站公告

今日签到

点亮在社区的每一天
去签到