zoukankan      html  css  js  c++  java
  • 数据分析之Numpy、Matplotlib库

    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模块的简单使用
      1 """
      2 菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
      3 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
      4 
      5 """
      6 import numpy as np  # pip install numpy
      7 
      8 # 1.numpy创建的数组类型为<class 'numpy.ndarray'>
      9 
     10 # (1)创建ndarray一维数组
     11 ndarray_1 = np.array([1, 2, 4, 6])
     12 print(ndarray_1)
     13 # (2)创建ndarray二维数组(如果元素不对称,结果是一维列表数组)
     14 ndarray_2 = np.array([[2, 4, 6], [1, 3, 5]])
     15 print(ndarray_2,type(ndarray_2[1]))
     16 
     17 # ndarray_2=np.array([[2,4,6],[1,3,5,3]])
     18 # print(ndarray_2,type(ndarray_2))#[list([2, 4, 6]) list([1, 3, 5, 3])] <class 'numpy.ndarray'>
     19 # print(type(ndarray_2[1]))#<class 'list'>
     20 
     21 # (3)numpy默认ndarray的所有元素的类型是相同的
     22 # 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
     23 ndarray_3 = np.array([[2, 4, 6], [1, 3, 5]])
     24 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5 <class 'numpy.int32'>
     25 
     26 ndarray_3 = np.array([[2, 4.8, 6], [1, 3, 5]])
     27 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5.0 <class 'numpy.float64'>
     28 
     29 
     30 ndarray_3 = np.array([["a", 4, 6], [1, 3, 5]])
     31 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5 <class 'numpy.str_'>
     32 
     33 #(4)numpy创建等差数组np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列
     34 ndarray_4=np.linspace(0,10,num=20)
     35 print(ndarray_4)
     36 
     37 #(5)numpy创建随机数组np.arange([start, ]stop, [step, ]dtype=None)
     38 ndarray_5=np.arange(0,10,step=2)
     39 print(ndarray_5)
     40 ndarray_5=np.arange(0,10)
     41 print(ndarray_5)
     42 
     43 #(6)numpy创建随机多维数组np.random.randint(low, high=None, size=None, dtype='l')
     44 #如果指定了随机银子,就不在随机
     45 # np.random.seed(10)#随机因子/时间种子
     46 ndarray_6=np.random.randint(0,10,size=(3,4))#0到10之间3X4的数组
     47 print(ndarray_6)
     48 ndarray_6=np.random.randint(0,100,size=(3,3,3))#0到100之间3X3X3的三维数组
     49 print(ndarray_6)
     50 
     51 #(7)numpy创建0-1之间的随机小数
     52 ndarray_7=np.random.random()
     53 print(ndarray_7,type(ndarray_7))
     54 
     55 
     56 #2.ndarray数组的属性
     57 
     58 #(8)ndarray数组的大小:ndarray.size
     59 print(ndarray_1.size)
     60 print(ndarray_2.size)
     61 print(ndarray_3.size)
     62 print(ndarray_4.size)
     63 print(ndarray_5.size)
     64 print(ndarray_6.size)
     65 
     66 #(9)ndarray数组的维度:ndarray.ndim
     67 print(ndarray_1.ndim)
     68 print(ndarray_2.ndim)
     69 print(ndarray_3.ndim)
     70 print(ndarray_4.ndim)
     71 print(ndarray_5.ndim)
     72 print(ndarray_6.ndim)
     73 
     74 #(10)ndarray数组的形状:ndarray.shape
     75 print(ndarray_1.shape)
     76 print(ndarray_2.shape)
     77 print(ndarray_3.shape)
     78 print(ndarray_4.shape)
     79 print(ndarray_5.shape)
     80 print(ndarray_6.shape)
     81 
     82 #(11)ndarray数组的元素类型:ndarray.dtype
     83 print(ndarray_1.dtype)
     84 print(ndarray_2.dtype)
     85 print(ndarray_3.dtype)
     86 print(ndarray_4.dtype)
     87 print(ndarray_5.dtype)
     88 print(ndarray_6.dtype)
     89 
     90 #(12)ndarray类型查看:type()
     91 print(type(ndarray_1))
     92 print(type(ndarray_2))
     93 print(type(ndarray_3))
     94 print(type(ndarray_4))
     95 print(type(ndarray_5))
     96 print(type(ndarray_6))
     97 
     98 
     99 
    100 #3.ndarray数组的基本操作
    101 # 对二维数组中括号第一个参数为行,第二个参数为列;
    102 #对多维数组ndarray[,,,,],中括号中逗号分割的每个数字都指代一个维度
    103 
    104 #(13)索引:①一维数组与列表一致;②多维数组与C语言一样
    105 ndarray_13=np.random.randint(0,10,size=(3,4))
    106 print(ndarray_13)#二维数组
    107 print(ndarray_13[1])#获取二位数组第2行
    108 print(ndarray_13[[1,2]])#获取二维数组第2和第3行
    109 print(ndarray_13[1,3])#获取二维数组第2行第4个元素
    110 
    111 #(14)切片
    112 ndarray_14=np.random.randint(0,10,size=(5,4))
    113 print(ndarray_14)
    114 print(ndarray_14[:2])#获取二维数组的前两行
    115 print(ndarray_14[:,:2])#获取二位数组的前两列
    116 print(ndarray_14[:2,:2])#获取二位数组的前两行和前两列
    117 
    118 print(ndarray_14[::-1])#对二维数组的行进行翻转
    119 print(ndarray_14[:,::-1])#对二位数组的列进行翻转
    120 print(ndarray_14[::-1,::-1])#对二维数组的行和列都进行翻转
    121 
    122 
    123 #(15)变形:使用ndarray.reshape()函数,注意参数是一个tuple!
    124 
    125 ndarray_15=np.random.randint(0,10,size=10)
    126 print(ndarray_15)
    127 print(ndarray_15.reshape((2,5)))#一维数组变形成二位数组
    128 
    129 ndarray_15=np.random.randint(0,10,size=(3,4))
    130 print(ndarray_15)
    131 print(ndarray_15.reshape((12,)))#二位数组变形成一位数组
    132 print(ndarray_15.reshape((2,6)))#二位数组便形成其它二位数组
    133 
    134 #(16)级联操作:对多个ndarray数组进行横向或者纵向的拼接np.concatenate((arr,arr),axis=0) #axis=0 列  1行
    135 ndarray_16=np.random.randint(0,10,size=(3,4))
    136 print(ndarray_16)
    137 print(np.concatenate((ndarray_16,ndarray_16),axis=0))#第一个参数为多个ndarray数组,axis为0表示列级联
    138 print(np.concatenate((ndarray_16,ndarray_16),axis=1))#第一个参数为多个ndarray数组,axis为1表示列级联
    139 
    140 
    141 
    142 #4.ndarray数组的聚合操作
    143 #(17)求和:ndarray.sum([axis=])
    144 ndarray_17=np.random.randint(0,10,size=(3,4))
    145 print(ndarray_17)
    146 
    147 print(ndarray_17.sum())#无参数默认全部求和
    148 print(ndarray_17.sum(axis=1))#axis为1指定行求和
    149 print(ndarray_17.sum(axis=0))#axis为0指定列求和
    150 
    151 #(18)最大值、最小值:ndarray.max()/ndarray.min()
    152 ndarray_18=np.random.randint(0,10,size=(3,4))
    153 print(ndarray_18)
    154 
    155 print(ndarray_18.max())#默认无参数求数组最大值
    156 print(ndarray_18.max(axis=1))#axis为1指定行求最大值
    157 print(ndarray_18.max(axis=0))#axis为0指定列求最大值
    158 
    159 print(ndarray_18.min())#默认无参数求数组最小值
    160 print(ndarray_18.min(axis=1))#axis为1指定行求最小值
    161 print(ndarray_18.min(axis=0))#axis为0指定列求最小值
    162 
    163 #(19)平均值:ndarray.mean()
    164 ndarray_19=np.random.randint(0,10,size=(3,4))
    165 print(ndarray_19)
    166 
    167 print(ndarray_19.mean())#默认无参数求数组平均值
    168 print(ndarray_19.mean(axis=1))#axis为1指定行求平均值
    169 print(ndarray_19.mean(axis=0))#axis为1指定列求平均值
    170 
    171 #(19)ndarray数组的其它聚合操作
    172 """
    173 ndarray.prod()     
    174 ndarray.std()       标准差
    175 ndarray.var()
    176 ndarray.argmin()         
    177 ndarray.argmax()       
    178 ndarray.median()           
    179 ndarray.percentile()          
    180 ndarray.any()       一些           
    181 ndarray.all()       所有
    182 ndarray.power()     幂运算        
    183 """
    184 
    185 
    186 
    187 #5.ndarray数组排序:np.sort()与ndarray.sort()都可以,但有区别
    188 ndarray_20=np.random.randint(0,10,size=(3,4))
    189 print(ndarray_20)
    190 print(np.sort(ndarray_20))#默认对行、列顺序排序
    191 print(np.sort(ndarray_20,axis=1))#对行排序
    192 print(np.sort(ndarray_20,axis=0))#对列排序
    Numpy简单使用
    Matplotlib模块的简单使用
     1 """
     2 菜鸟教程:https://www.runoob.com/numpy/numpy-matplotlib.html
     3 Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
     4 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
     5 """
     6 import numpy as np
     7 import matplotlib.pyplot as plt
     8 #读取显示图片
     9 img_arr=plt.imread('1.png')#读取图片数组
    10 plt.imshow(img_arr)#显示图片
    11 plt.show()
    12 print(img_arr.shape)
    13 #可以直接使用numpy中的数组方法
    14 plt.imshow(img_arr[::-1])#对行进行翻转,图片上下反转
    15 plt.show()
    16 
    17 plt.imshow(img_arr[:,::-1])#对列进行翻转,图片左右反转
    18 plt.show()
    19 
    20 plt.imshow(img_arr[::-1,::-1])#对行/列进行翻转,图片完全反转
    21 plt.show()
    22 
    23 print(img_arr.shape)#三维数组
    24 plt.imshow(img_arr[::-1,::-1,::-1])#对行/列及颜色进行翻转,图片及色彩完全反转
    25 plt.show()
    26 
    27 #拼图np.concatenate((arr,arr),axis=0) #axis=0 列  1行
    28 img_arr3=np.concatenate((img_arr,img_arr,img_arr),axis=1)#行拼3
    29 img_arr9=np.concatenate((img_arr3,img_arr3,img_arr3),axis=0)#列拼3
    30 plt.imshow(img_arr9)
    31 plt.show()
    32 
    33 
    34 
    35 # 绘制图形
    36 import numpy as np
    37 x = np.arange(1, 11)
    38 y = 2 * x + 5
    39 plt.title("Matplotlib demo")
    40 plt.xlabel("x axis caption")
    41 plt.ylabel("y axis caption")
    42 plt.plot(x, y)
    43 plt.show()
    Matplotlib简单使用

       效果图:

        

    
    
  • 相关阅读:
    线性表之链式存储结构
    最大公约数:辗转相除法
    字符串系列之:逆序输出字符串
    链表有关的常见面试题
    从数组中找出最大的和最小的数
    C语言实现简单线程池
    线性表之顺序存储结构
    新学了姜葱豆腐
    渗透1
    MySQL注入中新Tips
  • 原文地址:https://www.cnblogs.com/open-yang/p/11347624.html
Copyright © 2011-2022 走看看