
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]]])




![[数据结构初阶]堆的应用](https://img-blog.csdnimg.cn/direct/a764d84a83da498da9d10f599dc847eb.png)













