声明,内容严重借鉴https://blog.csdn.net/weixin_43598956/article/details/106585342

撰写此文目的有二:记录知识点以及练习markdown撰写博客,请各位尊重原创支持原文↑↑↑

Matplotlib & NumPy学习笔记

    • `声明,内容严重借鉴https://blog.csdn.net/weixin_43598956/article/details/106585342`
    • `撰写此文目的有二:记录知识点以及练习markdown撰写博客,请各位尊重原创支持原文↑↑↑`
  • Matplotlib部分
    • 常用统计图比较
      • Matplotlib基本要点
        • 1).设置图片的大小
        • 2).保存图片
      • 3).设置x,y轴上的刻度及字符串
        • 4).设置中文显示
        • 5).添加x,y轴以及titile描述信息
        • 6).绘制网格
        • 7).添加图例
        • 8).绘图
        • 实例1:用折线图绘制10到12点每一分钟的气温变化情况
        • 实例2:绘制折线图2
        • 实例3.绘制散点图
        • 实例4:绘制竖条形图
        • 实例5.绘制横条形图
        • 实例6:绘制多个条形度
        • 实例7:绘制直方图
  • Numpy部分
    • 1.Numpy Ndarray对象
    • 2.Numpy数据类型
      • *`图片来自菜鸟教程`*
    • 3.Numpy广播(Broadcast)
    • 4.Numpy创建数组
    • 5.Numpy数组操作
      • 1)修改数组形状
      • 2)翻转数组
      • 3)连接数组
      • 4)数组的行列交换
    • 6、NumPy切片和索引
    • 7、NumPy统计函数
      • 计算数组项的中值、平均值、加权平均值
      • 标准与方差
    • 8.Numpy读取数据

Matplotlib部分

常用统计图比较

折线图

  • 以折线图的上升或下降来表示统计数量的增减变化的统计图
  • 特点:能够显示数据的变化趋势,反应事物的变化情况

直方图

  • 由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般横轴表示数据范围,纵轴
  • 表示分布情况
  • 特点:绘制连续性的数据,展示一组或者多组数据的分布情况

条形图

  • 排列在工作表的列或行中的数据可以绘制到条形图中
  • 特点:绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别

散点图

  • 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总
  • 结坐标
  • 特点:判断变量之间是否存在数量关联趋势,展示离群点

Matplotlib基本要点

from matplotlib import pyplot as plt
x = range(2,26,2)                              #数据在X轴的位置,步长为2,是一个可迭代对象
y = [15,12,16,18,21,26,30,18,10,2,7,33]       #数据在Y轴的位置,是一个可迭代对象X轴和Y轴的数据一起组成了所有要绘制的坐标,分别为(2,15),(4,12),(6,16)。。。
plt.plot(x,y)                                  #传入x和一,通过plot绘制出折线图
plt.show()                                     #展示图形

图片:

1).设置图片的大小

  • plt.figure(figsize(a,b),dpi=c)
    - figsize(a,b):图片的长和宽
    - dpi:每英寸像素点的个数
plt.figure(figsize=(12,7),dpi=100)  # 创建一个 12 * 7 点(point)的图,并设置分辨率为 100

2).保存图片

  • plt.savefig("file_path")
    位置需要放在plot.plot()之后

    plt.savefig("./t1.png")   #保存图片到指定位置,保存为svg这种矢量图格式,放大后就不会又锯齿
    

    3).设置x,y轴上的刻度及字符串

    • plt.xticks(x,rotation=45,fontproperties=my_font)
      传一个参数:包含数字的可迭代对象,步长合适即可
      传入两个参数:分别为两个可迭代对象,数字型和字符型最终会一一对应,只显示字符串
      - rotation:旋转角度
      - fontproperties:中文显示
  • plt.yticks(y)
    例如:
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation = 45,fontproperties=my_font)
#若要X轴刻度变稀疏点,可用列表取步长(X[::3])来解决,旋转角度为45度,my_font为自己设置的字体样式

4).设置中文显示

  • font_manager.FontProperties(fname=" ")
    例如:
from matplotlib import font_manager   #第一步:导入font_manager
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")

5).添加x,y轴以及titile描述信息

  • plt.xlabel(" ")
  • plt.ylabel(" ")
  • plt.title(" ")
    例如:
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)

6).绘制网格

  • plt.grid(alpha = 0.2)
    - alpha:透明度

7).添加图例

  • plt.legend()
    例如:
x = range(1,50,3)
x_2 = range(3,60,2)
y_1 = [1,3,78,9,30,84,7,48,99,27,83,72]
y_2 = [3,8,90,37,82,93,84,26,84,67,29,76]from matplotlib import pyplot as pltplt.plot(x,y_1,label = "自己")               #在一个图上绘制多个图形(多次plt.plot()即可)
plt.plot(x,y_2,label = "朋友")               #第一步:分别添加labelplt.legend(prop = my_font)                   #第二步:添加图例,若为中文字体需要用到prop

图片:

8).绘图

  • plt.plot(x,y,color='r',linestyle="--",linewidth=5,alpha=0.5)#绘制折线图
    - x:所有坐标的x的值
    - y:所有的坐标y的值
    - color:线条的颜色
    - linestyle:线条风格
    - linewidth:线条粗细
    - alpha

  • plt.scatter(x,y) #绘制散点图

  • plt.bar(x,y) #绘制竖条形图

  • plt.harh(x,y) #绘制横条形图

  • plt.hist(x,num_bins) #绘制直方图
    - num_bins:设置的组距

实例1:用折线图绘制10到12点每一分钟的气温变化情况

from matplotlib import pyplot as plt  #导入pyplot
import random
from matplotlib import font_manager   #导入font_managerplt.figure(figsize=(10,8),dpi=100)     #设置图片大小及分辨率my_font = font_manager.FontProperties(fname="c:\Windows\Fonts\msyh.ttc")   #设置字体x = range(0,120)
y = [random.randint(20,35) for i in range(120)]#绘制折线图
plt.plot(x,y)#调整x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]  ##这里好像不太懂################################想要x轴刻度稀疏一点,则可对列表取步长操作,数字和字符串一一对应,数据的长度一样,旋转度数
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation = 45,fontproperties=my_font)#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)#缓存图片
plt.savefig("./t1.png")#展示图片
plt.show()

截图:

实例2:绘制折线图2

from matplotlib import pyplot as plt
from matplotlib import font_managerplt.figure(figsize=(10,8),dpi=100)my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")x = range(11,31)
y_1 = [3,2,4,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [3,5,1,1,5,0,2,7,1,3,5,6,6,2,1,2,1,0,4,5]plt.plot(x,y_1,label = "小弟")
plt.plot(x,y_2,label = "大哥")#调整x轴的刻度
_xtick_labels = ["{}号".format(i) for i in range(11,31)]#############这里x轴刻度分布合适不取步长,则不用转为列表形式,数字和字符串一一对应,数据的长度一样,旋转45度
plt.xticks(x,_xtick_labels,rotation = 45,fontproperties=my_font)#添加描述信息
plt.xlabel("几号",fontproperties=my_font)
plt.ylabel("零食量 单位(包)",fontproperties=my_font)
plt.title("11-30号每天吃零食包数情况走势",fontproperties=my_font)#添加图列
plt.legend(prop = my_font)#绘制网络
plt.grid(alpha = 0.2)#展示
plt.show()

截图:

实例3.绘制散点图

from matplotlib import pyplot as plt
from matplotlib import font_manager#设置图形大小
plt.figure(figsize=(12,7),dpi = 100)my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")x_5 = range(1,32)
x_6 = range(51,82)
y_5 = [21,19,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,12]
y_6 = [13,14,28,19,24,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,19,7]#绘制散点图,及图例
plt.scatter(x_5,y_5,label = "5月份")
plt.scatter(x_6,y_6,label = "6月份")#设置x轴的刻度
_x = list(x_5) + list(x_6)
_xticks_labels = ["5月{}日".format(i) for i in x_5]
_xticks_labels += ["6月{}日".format(i) for i in x_6]
plt.xticks(_x[::3],_xticks_labels[::3],rotation = 45,fontproperties=my_font)#添加图例
plt.legend(prop = my_font)#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("速度",fontproperties=my_font)
plt.title("标题",fontproperties=my_font)#展示
plt.show()

截图:

实例4:绘制竖条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager#设置图形大小
plt.figure(figsize=(12,7),dpi=100)#设置字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")#添加数据
a = ["战狼2","速度与激情8","功夫瑜伽","西游降妖篇","变形金刚5:\n最后的骑士","摔跤吧!爸爸","加勒比海盗5:\n死无对证","金刚:骷髅岛","极限特工:\n终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠\n:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,3.32,6.99,6.88,6.86,6.58,2.23]#绘制条形图
plt.bar(range(len(a)),b)#设置x轴刻度
plt.xticks(range(len(a)),a,rotation = 90,fontproperties=my_font)#添加描述信息
plt.xlabel("电影名字",fontproperties=my_font)
plt.ylabel("票房 单位(亿)",fontproperties=my_font)
plt.title("电影票房",fontproperties=my_font)#展示
plt.show()

截图:

实例5.绘制横条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager#设置图形大小
plt.figure(figsize=(12,7),dpi=100)#设置字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")#添加数据
a = ["战狼2","速度与激情8","功夫瑜伽","西游降妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,3.32,6.99,6.88,6.86,6.58,2.23]#绘制条形图
plt.barh(range(len(a)),b)#设置字符串到x轴
plt.yticks(range(len(a)),a,rotation = 0,fontproperties=my_font)#添加描述信息
plt.ylabel("电影名字",rotation = 45,fontproperties=my_font)
plt.xlabel("票房 单位(亿)",fontproperties=my_font)
plt.title("电影票房",fontproperties=my_font)#添加网络
plt.grid(alpha = 0.4)#展示
plt.show()

截图:

实例6:绘制多个条形度

from matplotlib import pyplot as plt
from matplotlib import font_manager#设置图形大小
plt.figure(figsize=(12,7),dpi=100)#设置字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")#添加数据
a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_14 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_16 = [2358,399,2358,362]#设置x轴距离
bar_width = 0.2                                    #设置条形图宽度
x_14 = list(range(len(a)))                         #14号x轴的距离分布
x_15 = [i+bar_width for i in x_14]                #15号紧跟在14号后面,所以在14号基础上加一个bar_width
x_16 = [i+bar_width for i in x_15]                #16号原理同15号#绘制条形图
plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")#设置字符串到x轴
plt.xticks(x_15,a,rotation = 0,fontproperties=my_font)       #15号字符串刚好取中#添加图例
plt.legend(prop=my_font)#添加描述信息
plt.xlabel("电影名称",fontproperties=my_font)
plt.ylabel("票房 单位(亿)",fontproperties=my_font)
plt.title("3天票房对比",fontproperties=my_font)#添加网络
plt.grid(alpha = 0.4)#票房
plt.show()

截图:

实例7:绘制直方图

from matplotlib import pyplot as plt#设置图形大小
plt.figure(figsize=(12,7),dpi=100)interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]#绘制直方图
plt.bar(range(12),quantity,width=1)#设置x轴刻度
_x = [i-0.5 for i in range(13)]
_xticks_labels = interval + [150]
plt.xticks(_x,_xticks_labels)#绘制网格
plt.grid()#展示图片
plt.show()

截图:

Numpy部分

1.Numpy Ndarray对象

NumPy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集中元素的索引。
使用numpy生成数组,得到ndarray的类型

  • numpy.array()
  • numpy.arange()
import numpy as np
import random#使用numpy生成数据,得到ndarry的类型
t1 = np.array([1,2,3])
print(t1)
print(type(t1))
print("=" * 50)t2 = np.array(range(10))
print(t2)
print(type(t2))
print("=" * 50)t3 = np.arange(4,10,2)
print(t3)
print(type(t3))
print("=" * 50)t4 = np.array(range(1,4),dtype=float)
print(t4)
print(t4.dtype)
print("=" * 50)t5 = np.array([1,1,0,1,0],dtype=bool)
print(t5)
print(t5.dtype)
print("=" * 50)t6 = t5.astype("int")   #修改数据类型
print(t6)
print(t6.dtype)
print("=" * 50)t7 = np.array([random.random() for i in range(18)])
print(t7)
print(t7.dtype)
print("=" * 50)#两位小数
t8 = np.round(t7,2)
print(t8)
print(t8.dtype)
[1 2 3]
<class 'numpy.ndarray'>
==================================================
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>
==================================================
[4 6 8]
<class 'numpy.ndarray'>
==================================================
[1. 2. 3.]
float64
==================================================
[ True  True False  True False]
bool
==================================================
[1 1 0 1 0]
int32
==================================================
[0.61603861 0.02896186 0.12319433 0.95822558 0.26362422 0.672382740.43073237 0.43314739 0.98498236 0.34943075 0.42417254 0.017539950.046794   0.96810449 0.47940812 0.09144121 0.26297822 0.06319607]
float64
==================================================
[0.62 0.03 0.12 0.96 0.26 0.67 0.43 0.43 0.98 0.35 0.42 0.02 0.05 0.970.48 0.09 0.26 0.06]
float64

2.Numpy数据类型

图片来自菜鸟教程

3.Numpy广播(Broadcast)

广播(Broadcast)是numpy对不同形状(shape)的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行。 如果两个数组a和b形状相同,即满足a.shape == b.shape,那么a*b的结果就是a与b数组相应位相乘。这要求维数相同,且各维度的长度相同。

import numpy as np
#当运算中的两个数组的形状不同时,numpy将自动触发广播机制。
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print(c)
#两个数组的列数要相同,否则报错

截图:

import numpy as npa = np.array([[0,0,0],[10,10,10],[20,20,20],[30,30,30]])
b = np.array([1,2,3])print(a + b)

截图:

4.Numpy创建数组

ndarry数组除了可以使用底层ndarry构造器来创建外,也可以通过以下几种方式来创建

  • numpy.zero(shape, dtype = float, order = 'c')
    - 创建指定大小的数组,数组元素以0来填充 。numpy.ones(shape, dtype = None, order = 'c')
    - 创建指定形状的数组,数组元素以1来填充
import numpy as np#默认为浮点数
x = np.zeros(5)
print(x)
print("=" * 20)#设置类型为整数
y = np.zeros((5,), dtype=np.int)
print(y)
print("=" * 20)#自定义类型
z = np.zeros((2,2), dtype=[('x', 'i4'), ('y','i4')])
print(z)
print("=" * 20)#自定义类型
z = np.zeros((2,2), dtype=[('x', 'float'), ('y','i4')])
print(z)

import numpy as np#默认为浮点数
x = np.ones(5)
print(x)
print("=" * 20)#自定义类型
x = np.ones([2, 2], dtype=int)
print(x)
print("=" * 20)#自定义类型
x = np.ones([2, 2], dtype=[('a','float'),('b','i4')])
print(x)

5.Numpy数组操作

1)修改数组形状

- numpy.reshape()
- numpy.ndarry.flatten()

import numpy as np#数组形状
t1 = np.array(range(12))
print(t1.shape)
print(t1)
print("=" * 50)t2 = np.array([[1,2,3],[4,5,6]])
print(t2.shape)
print("=" * 50)#修改数组形状
t3 = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
print(t3.reshape(3,4))
print("=" * 50)t4 = np.arange(12).reshape(3,4)
print(t4)
print("=" * 50)print(t4.reshape(12,))        #转为一维
print("=" * 50)print(t4.reshape(12,1))       #转为12行1列
print("=" * 50)print(t4.reshape(1,12))
print("=" * 50)#多维数组展开,更改对原数组不影响
print(t4.flatten())

2)翻转数组

  • numpy.transpose()
  • numpy.ndarray.T
import numpy as npa = np.arange(12).reshape(3,4)print('原数组:')
print(a)print('对换数组:')
print(np.transpose(a))

import numpy as npa = np.arange(12).reshape(3,4)print('原数组:')
print(a)print('转置数组:')
print(a.T)
print('*' * 20)
print(np.transpose(a))

3)连接数组

  • numpy.hstack(a,b)
    - 它通过水平堆叠来生成数组
  • numpy.vstack(a,b)
    - 它通过垂直堆叠来生成数组
import numpy as npa = np.array([[1,2],[3,4]])
print('第一个数组:')
print(a)b = np.array([[5,6],[7,8]])
print('第二个数组:')
print(b)print('水平堆叠:')
c = np.hstack((a,b))
print(c)print('*'*20 + '分割线' + '*'*20)d = np.vstack((a,b))
print('竖直堆叠:')
print(d)

4)数组的行列交换

import numpy as npt = np.arange(0,12).reshape(3,4)
print(t)
print("=" * 20)#交换2,3行
t[[1,2],:] = t[[2,1],:]
print(t)
print("=" * 20)#交换1,3列
t[:,[0,2]] = t[:,[2,0]]
print(t)
print("=" * 20)

6、NumPy切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与Python中的list的切片操作一样。 ndarray数组可以基于0-n的下标进行索引,切片对象可以通过内置的slice函数,并设置start,stop及step参数进行,从原数组中切割出一个新数组

import numpy as npa = np.arange(10)
print(a)
print("=" * 20)s = slice(2,7,2)
print(a[s])


以上实例中,我们首先通过arange()函数创建ndarray对象。然后,分别设置起始,终止和步长的参数为2,7和2。 我们也可以通过冒号分隔片参数start:stop:step来进行切片

import numpy as npa = np.arange(10)
b = a[2:7:2]                   #从索引 2 开始,到索引 7 停止,间隔为 2print(b)


冒号:的解释:如果只放置一个参数,如[2],将返回与该索引相对应的单个元素。如果为[2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如[2:7],那么则提取两个索引(不包含停止索引)之间的项。

import numpy as npt2 = np.arange(1,37).reshape(6,6)
print(t2)
print('=' * 50)#取行,取第3行
print(t2[2])
print('=' * 50 )#取多行,取第3行及以后的数据
print(t2[2:])
print('=' * 50)#取不连续多行,取第2,3,5,行数据
print(t2[[1,2,4]])
print('=' * 50)#取列,取第2列
print(t2[:,1])
print('=' * 50)#取连续多列,取第3列及以后数据
print(t2[:,2:])
print('=' * 50)#取不连续多列,取第1,3列
print(t2[:,[0,2]])
print('=' * 50)#取多行多列,取3-5行2-4列
print(t2[2:5,1:4])
print('=' * 50)#取多个不相邻的点,两个列表对应的值分别作为行和列(0,0)(2,1)(2,3)
print(t2[[0,2,2],[0,1,3]])
print('=' * 50)#修改值,np.where(三元运算符)把 t2 中小于 10 的替换成 0 ,大于等于 10 的替换成 10
print(np.where(t2<10,0,10))
[[ 1  2  3  4  5  6][ 7  8  9 10 11 12][13 14 15 16 17 18][19 20 21 22 23 24][25 26 27 28 29 30][31 32 33 34 35 36]]
==================================================
[13 14 15 16 17 18]
==================================================
[[13 14 15 16 17 18][19 20 21 22 23 24][25 26 27 28 29 30][31 32 33 34 35 36]]
==================================================
[[ 7  8  9 10 11 12][13 14 15 16 17 18][25 26 27 28 29 30]]
==================================================
[ 2  8 14 20 26 32]
==================================================
[[ 3  4  5  6][ 9 10 11 12][15 16 17 18][21 22 23 24][27 28 29 30][33 34 35 36]]
==================================================
[[ 1  3][ 7  9][13 15][19 21][25 27][31 33]]
==================================================
[[14 15 16][20 21 22][26 27 28]]
==================================================
[ 1 14 16]
==================================================
[[ 0  0  0  0  0  0][ 0  0  0 10 10 10][10 10 10 10 10 10][10 10 10 10 10 10][10 10 10 10 10 10][10 10 10 10 10 10]]
  • 布尔索引:布尔索引通过布尔运算(如:比较运算)来获取符合指定条件的元素的数组。
import numpy as npx = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
print(x)#现在我们会打印出大于 5 的元素
print('大于 5 的元素:')
print(x[x > 5])
[[ 0  1  2][ 3  4  5][ 6  7  8][ 9 10 11]]
大于 5 的元素:
[ 6  7  8  9 10 11]

7、NumPy统计函数

NumPy提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等

  • numpy.amin() 和 numpy.amix()
    - numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
    - numpy.amix() 用于¥¥¥¥¥¥¥¥¥¥¥¥¥最大值。
import numpy as npa = np.array([[2,10,20],[80,43,31],[22,43,10]])print("原始数组:\n")
print(a)
print('\n')print("数组中最小元素:",np.amin(a))
print("数组中最大元素:",np.amax(a))
print('\n')print("数组列中最小元素:",np.amin(a,0))
print("数组列中最大元素:",np.amax(a,0))
print('\n')print("数组行中最小元素:",np.amin(a,1))
print("数组行中最大元素:",np.amax(a,1))
原始数组:[[ 2 10 20][80 43 31][22 43 10]]数组中最小元素: 2
数组中最大元素: 80数组列中最小元素: [ 2 10 10]
数组列中最大元素: [80 43 31]数组行中最小元素: [ 2 31 10]
数组行中最大元素: [20 80 43]
  • numpy.ptp()
    - numpy.ptp() 函数计算数组中元素最大值与最小值的差(大 - 小)
import numpy as npa = np.array([[2,10,20],[80,43,31],[22,43,10]])  print("原始数组:\n",a)
print('\n')print("轴1 峰间值:",np.ptp(a,1))
print("轴0 峰间值:",np.ptp(a,0))
原始数组:[[ 2 10 20][80 43 31][22 43 10]]轴1 峰间值: [18 49 33]
轴0 峰间值: [78 33 21]
  • numpy.percentile()
    - numpy.percentile() 函数得到百分位数,百分位数是统计中使用的度量,表示这个值的观察值占总数的百分比。
    - 例如,第80个百分位数是这样一个值,它至少有80%的数据项小于或等于这个值,且至少有(100-80)%的数据项大于或等于这个值。
  • 函数语法:
    numpy.percentile(input, q, axis)
  • 参数:
    - input:输入数组
    - q:要计算的百分位数,在0~100之间
    - axis:计算百分位数的轴方向,二维取值0,1
import numpy as npa = np.array([[2,10,20],[80,43,31],[22,43,10]])  print("原始数组:\n",a)
print('\n')print("轴0 百分位数",np.percentile(a,10,0))
print("轴1 百分位数",np.percentile(a,10,1))
原始数组:[[ 2 10 20][80 43 31][22 43 10]]轴0 百分位数 [ 6.  16.6 12. ]
轴1 百分位数 [ 3.6 33.4 12.4]

计算数组项的中值、平均值、加权平均值

  • numpy.median()
    - numpy.median() 函数用于计算数组 a 中元素的中位数(中值)

  • numpy.mean()
    - numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算

  • numpy.average()
    - numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 该函数可以接受一个轴参数。
    - 如果没有指定轴,则数组会被展开
    - 考虑一份数组[1,2,3,4]和相应的权值[4,3,2,1],通过将对应元素的乘积相加,再除以权值的和来计算加权平均值

- 加权平均值 = (1*4 + 2*3 + 3*2 + 4*1)/(4+3+2+1)

import numpy as npa = np.array([[1,2,3],[4,5,6],[7,8,9]])  print("原始数组:\n",a)
print('\n')print("轴0 中值:",np.median(a,0))
print("轴0 平均值:",np.mean(a,0))wt = np.array([0,0,10])
print("轴1 加权平均值:",np.average(a,1,weights=wt))
原始数组:[[1 2 3][4 5 6][7 8 9]]轴0 中值: [4. 5. 6.]
轴0 平均值: [4. 5. 6.]
轴1 加权平均值: [3. 6. 9.]

标准与方差

  • numpy.std()
    - 要计算标准差,可以使用std()函数。
    - 标准差的公式:

    - std = sqrt(mean(abs(x - x.mean())**2))

  • numpy.var()
    - 要计算方差,可以使用var()函数。
    - 方差公式
    - var = mean(abs(x - x.mean())**2)

import numpy as np
print(np.std([1,2,3,4]))
print(np.var([1,2,3,4]))
1.118033988749895
1.25

8.Numpy读取数据

  • np.loadtxt(frame,dtype=np.float,delimiter=None)
    - frame:文件、字符串或产生器,可以是.gz或.bzz压缩文件
    - dtype:数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np.float
    - delimiter:分隔字符串,默认是任何空格,改为逗号
import numpy as np#数据路径
us_data = r"datacombine.csv"#添加数据,设置按逗号进行数据分隔,如果数据元素值比较大,这里dtype不设置为int,则会以科学计数法展示
us_data = np.loadtxt(us_data,delimiter=",",dtype="int")print(us_data)
[[   6    1   46   74 9039 9145][  18    4  114  106 7718 7871][  14    2   81   69 6820 6919]...[  23    6   16  110  852 1010][  43   11   22  104  635  784][  36    6   30   70 1031 1131]]

Matplotlib NumPy笔记相关推荐

  1. Python numpy+pandas+matplotlib学习笔记

    Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...

  2. matplotlib学习笔记(3)---热力图(Heat Map)

    matplotlib学习笔记(3)-热力图(Heat Map) import matplotlib.pylab as plt import seaborn as sns import numpy as ...

  3. 【莫烦Python】Matplotlib学习笔记(二)

    [莫烦Python]Matplot学习笔记(一) [莫烦Python]Matplotlib学习笔记(二) 一.Bar柱状图/条形图 二.Contours等高线图 三.Image图像 四.3D图像 五. ...

  4. numpy 笔记: random模块

    1 基本应用 randint 随机生成大小为size的正整数ndarray low.high.size三个参数.默认high是None,如果只有low,那范围就是[0,low).如果有high,范围就 ...

  5. 使用Matplotlib Numpy Pandas构想泰坦尼克号高潮

    Did you know, a novel predicted the Titanic sinking 14 years previously to the actual disaster??? 您知 ...

  6. Python3 matplotlib+numpy画函数图像

    Python3 matplotlib+numpy画函数图像 matplotlib和numpy是python强大的第三方库之二.numpy内置了很多数学函数,而matplotlib则可以用于绘制图像,常 ...

  7. 【详解】机器学习库-Matplotlib+Numpy+Pandas

    目录 机器学习库-Matplotlib+Numpy+Pandas 1 Matplotlib基本使用 1.2 用途 1.3 操作指南 1.4 常见图形绘制 1.5 代码实现 2 Numpy基本使用 2. ...

  8. 神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现

    神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现 Mandelbrot图实际上是由Mandelbrot集合构成 ...

  9. python条形统计图显示数值_Python+matplotlib+numpy绘制精美的条形统计图

    导读热词 本文实例主要向大家分享了一个Python+matplotlib+numpy绘制精美的条形统计图的代码,效果展示如下: 完整代码如下: import matplotlib.pyplot as ...

最新文章

  1. 存clob为空的值_给Oracle数据库中CLOB字段插入空值
  2. 尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)
  3. django学习(1)-----项目组成
  4. PHP 完整实战23种设计模式
  5. node函数 node路由
  6. 算法面试题解答(六)
  7. LintCode刷题:有效数字
  8. java 邮箱模板_Java:Spring同时集成JPA与Mybatis
  9. vmware复制fedora16出现网络启动错误
  10. Java调用cplex求解泊位分配模型_修正重发【CPLEX教程03】JAVA调用cplex求解一个TSP模型详解...
  11. 【2022西电A测】温度检测控制仿真系统
  12. jQuery print 去掉页眉页脚
  13. 基于torch学汪峰写歌词 聊天机器人 图像着色/生成 看图说话 字幕生成
  14. fflush(stdout)和fflush(stdin)
  15. Java读取Excel中的合并单元格
  16. 中国大地保险的大数据应用架构演进之路
  17. 04-dropbear
  18. Linux系统中CPU占用率过高问题原因分析
  19. 新闻简报 365资讯简报 热点新闻早知道
  20. 【牛客】凤凰【交并集】

热门文章

  1. python猜一个数猜对为止_python猜数字游戏while
  2. [wp7软件]wp7~~各种视频播放器下载大全
  3. python下载安装教程-python下载安装教程
  4. 软文投稿网站,增加外链
  5. PC及移动端禁止用户缩放页面的实现方式
  6. 国耀明医互联网医院:生活的烦恼谁来倾听!
  7. 数字雕刻软件哪个好?ZBrush 2021推荐给大家
  8. 维语输入法uyhurqaapp v6.41.0
  9. 超2700万下载量“Instagram“即将推出安卓版
  10. 一个自定义的安卓验证码输入框控件、银行卡归属类型查询