NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
菜鸟教程:https://www.runoob.com/numpy/numpy-matplotlib.html Numpy模块的简单使用
"""
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 """
import numpy as np # pip install numpy # 1.numpy创建的数组类型为<class 'numpy.ndarray'> # (1)创建ndarray一维数组
ndarray_1 = np.array([1, 2, 4, 6])
print(ndarray_1)
# (2)创建ndarray二维数组(如果元素不对称,结果是一维列表数组)
ndarray_2 = np.array([[2, 4, 6], [1, 3, 5]])
print(ndarray_2,type(ndarray_2[1])) # ndarray_2=np.array([[2,4,6],[1,3,5,3]])
# print(ndarray_2,type(ndarray_2))#[list([2, 4, 6]) list([1, 3, 5, 3])] <class 'numpy.ndarray'>
# print(type(ndarray_2[1]))#<class 'list'> # (3)numpy默认ndarray的所有元素的类型是相同的
# 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
ndarray_3 = np.array([[2, 4, 6], [1, 3, 5]])
print(ndarray_3[1][2], type(ndarray_2[1][2])) # 5 <class 'numpy.int32'> ndarray_3 = np.array([[2, 4.8, 6], [1, 3, 5]])
print(ndarray_3[1][2], type(ndarray_2[1][2])) # 5.0 <class 'numpy.float64'> ndarray_3 = np.array([["a", 4, 6], [1, 3, 5]])
print(ndarray_3[1][2], type(ndarray_2[1][2])) # 5 <class 'numpy.str_'> #(4)numpy创建等差数组np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列
ndarray_4=np.linspace(0,10,num=20)
print(ndarray_4) #(5)numpy创建随机数组np.arange([start, ]stop, [step, ]dtype=None)
ndarray_5=np.arange(0,10,step=2)
print(ndarray_5)
ndarray_5=np.arange(0,10)
print(ndarray_5) #(6)numpy创建随机多维数组np.random.randint(low, high=None, size=None, dtype='l')
#如果指定了随机银子,就不在随机
# np.random.seed(10)#随机因子/时间种子
ndarray_6=np.random.randint(0,10,size=(3,4))#0到10之间3X4的数组
print(ndarray_6)
ndarray_6=np.random.randint(0,100,size=(3,3,3))#0到100之间3X3X3的三维数组
print(ndarray_6) #(7)numpy创建0-1之间的随机小数
ndarray_7=np.random.random()
print(ndarray_7,type(ndarray_7)) #2.ndarray数组的属性 #(8)ndarray数组的大小:ndarray.size
print(ndarray_1.size)
print(ndarray_2.size)
print(ndarray_3.size)
print(ndarray_4.size)
print(ndarray_5.size)
print(ndarray_6.size) #(9)ndarray数组的维度:ndarray.ndim
print(ndarray_1.ndim)
print(ndarray_2.ndim)
print(ndarray_3.ndim)
print(ndarray_4.ndim)
print(ndarray_5.ndim)
print(ndarray_6.ndim) #(10)ndarray数组的形状:ndarray.shape
print(ndarray_1.shape)
print(ndarray_2.shape)
print(ndarray_3.shape)
print(ndarray_4.shape)
print(ndarray_5.shape)
print(ndarray_6.shape) #(11)ndarray数组的元素类型:ndarray.dtype
print(ndarray_1.dtype)
print(ndarray_2.dtype)
print(ndarray_3.dtype)
print(ndarray_4.dtype)
print(ndarray_5.dtype)
print(ndarray_6.dtype) #(12)ndarray类型查看:type()
print(type(ndarray_1))
print(type(ndarray_2))
print(type(ndarray_3))
print(type(ndarray_4))
print(type(ndarray_5))
print(type(ndarray_6)) #3.ndarray数组的基本操作
# 对二维数组中括号第一个参数为行,第二个参数为列;
#对多维数组ndarray[,,,,],中括号中逗号分割的每个数字都指代一个维度 #(13)索引:①一维数组与列表一致;②多维数组与C语言一样
ndarray_13=np.random.randint(0,10,size=(3,4))
print(ndarray_13)#二维数组
print(ndarray_13[1])#获取二位数组第2行
print(ndarray_13[[1,2]])#获取二维数组第2和第3行
print(ndarray_13[1,3])#获取二维数组第2行第4个元素 #(14)切片
ndarray_14=np.random.randint(0,10,size=(5,4))
print(ndarray_14)
print(ndarray_14[:2])#获取二维数组的前两行
print(ndarray_14[:,:2])#获取二位数组的前两列
print(ndarray_14[:2,:2])#获取二位数组的前两行和前两列 print(ndarray_14[::-1])#对二维数组的行进行翻转
print(ndarray_14[:,::-1])#对二位数组的列进行翻转
print(ndarray_14[::-1,::-1])#对二维数组的行和列都进行翻转 #(15)变形:使用ndarray.reshape()函数,注意参数是一个tuple! ndarray_15=np.random.randint(0,10,size=10)
print(ndarray_15)
print(ndarray_15.reshape((2,5)))#一维数组变形成二位数组 ndarray_15=np.random.randint(0,10,size=(3,4))
print(ndarray_15)
print(ndarray_15.reshape((12,)))#二位数组变形成一位数组
print(ndarray_15.reshape((2,6)))#二位数组便形成其它二位数组 #(16)级联操作:对多个ndarray数组进行横向或者纵向的拼接np.concatenate((arr,arr),axis=0) #axis=0 列 1行
ndarray_16=np.random.randint(0,10,size=(3,4))
print(ndarray_16)
print(np.concatenate((ndarray_16,ndarray_16),axis=0))#第一个参数为多个ndarray数组,axis为0表示列级联
print(np.concatenate((ndarray_16,ndarray_16),axis=1))#第一个参数为多个ndarray数组,axis为1表示列级联 #4.ndarray数组的聚合操作
#(17)求和:ndarray.sum([axis=])
ndarray_17=np.random.randint(0,10,size=(3,4))
print(ndarray_17) print(ndarray_17.sum())#无参数默认全部求和
print(ndarray_17.sum(axis=1))#axis为1指定行求和
print(ndarray_17.sum(axis=0))#axis为0指定列求和 #(18)最大值、最小值:ndarray.max()/ndarray.min()
ndarray_18=np.random.randint(0,10,size=(3,4))
print(ndarray_18) print(ndarray_18.max())#默认无参数求数组最大值
print(ndarray_18.max(axis=1))#axis为1指定行求最大值
print(ndarray_18.max(axis=0))#axis为0指定列求最大值 print(ndarray_18.min())#默认无参数求数组最小值
print(ndarray_18.min(axis=1))#axis为1指定行求最小值
print(ndarray_18.min(axis=0))#axis为0指定列求最小值 #(19)平均值:ndarray.mean()
ndarray_19=np.random.randint(0,10,size=(3,4))
print(ndarray_19) print(ndarray_19.mean())#默认无参数求数组平均值
print(ndarray_19.mean(axis=1))#axis为1指定行求平均值
print(ndarray_19.mean(axis=0))#axis为1指定列求平均值 #(19)ndarray数组的其它聚合操作
"""
ndarray.prod()
ndarray.std() 标准差
ndarray.var()
ndarray.argmin()
ndarray.argmax()
ndarray.median()
ndarray.percentile()
ndarray.any() 一些
ndarray.all() 所有
ndarray.power() 幂运算
""" #5.ndarray数组排序:np.sort()与ndarray.sort()都可以,但有区别
ndarray_20=np.random.randint(0,10,size=(3,4))
print(ndarray_20)
print(np.sort(ndarray_20))#默认对行、列顺序排序
print(np.sort(ndarray_20,axis=1))#对行排序
print(np.sort(ndarray_20,axis=0))#对列排序
Numpy简单使用
Matplotlib模块的简单使用
"""
菜鸟教程:https://www.runoob.com/numpy/numpy-matplotlib.html
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
"""
import numpy as np
import matplotlib.pyplot as plt
#读取显示图片
img_arr=plt.imread('1.png')#读取图片数组
plt.imshow(img_arr)#显示图片
plt.show()
print(img_arr.shape)
#可以直接使用numpy中的数组方法
plt.imshow(img_arr[::-1])#对行进行翻转,图片上下反转
plt.show() plt.imshow(img_arr[:,::-1])#对列进行翻转,图片左右反转
plt.show() plt.imshow(img_arr[::-1,::-1])#对行/列进行翻转,图片完全反转
plt.show() print(img_arr.shape)#三维数组
plt.imshow(img_arr[::-1,::-1,::-1])#对行/列及颜色进行翻转,图片及色彩完全反转
plt.show() #拼图np.concatenate((arr,arr),axis=0) #axis=0 列 1行
img_arr3=np.concatenate((img_arr,img_arr,img_arr),axis=1)#行拼3
img_arr9=np.concatenate((img_arr3,img_arr3,img_arr3),axis=0)#列拼3
plt.imshow(img_arr9)
plt.show() # 绘制图形
import numpy as np
x = np.arange(1, 11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x, y)
plt.show()
Matplotlib简单使用
效果图: