栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy学习笔记

NumPy 学习笔记

NumPy ndarray对象NumPy数据类型

定义结构化数据 NumPy数组属性NumPy创建数组

numpy.empty()numpy.ones()numpy.asarray()numpy.frombuffer()numpy.fromiter() NumPy创建区间数组

numpy.arange()numpy.linspace()numpy.logspace() NumPy索引和切片

基本切片多维数组切片 NumPy高级索引

整数数组索引布尔数组索引 NumPy广播机制NumPy遍历数组

nditer迭代器遍历顺序指定遍历顺序修改数组元素值 NumPy相关数组操作

数组变维数组转置修改数组维度操作连接与分割数组操作 NumPy数组元素增删改查NumPy位运算NumPy字符串处理函数NumPy数学函数

三角函数舍入函数 NumPy算术运算

加减乘除其他重要的算术运算函数复数数组处理函数 NumPy统计函数NumPy排序和搜索功能

排序搜索 NumPy副本和视图

对原数组有影响对原数组无影响 NumPy字节交换NumPy Matrix矩阵库NumPy线性代数NumPy矩阵乘法NumPy和Matplotlib绘图NumPy IO操作

文章目录

NumPy ndarray对象NumPy数据类型

定义结构化数据 NumPy数组属性NumPy创建数组

numpy.empty()numpy.ones()numpy.asarray()numpy.frombuffer()numpy.fromiter() NumPy创建区间数组

numpy.arange()numpy.linspace()numpy.logspace() NumPy索引和切片

基本切片多维数组切片 NumPy高级索引

整数数组索引布尔数组索引 NumPy广播机制NumPy遍历数组

nditer迭代器遍历顺序指定遍历顺序修改数组元素值 NumPy相关数组操作

数组变维数组转置修改数组维度操作连接与分割数组操作 NumPy数组元素增删改查NumPy位运算NumPy字符串处理函数NumPy数学函数

三角函数舍入函数 NumPy算术运算

加减乘除其他重要的算术运算函数复数数组处理函数 NumPy统计函数NumPy排序和搜索功能

排序搜索 NumPy副本和视图

对原数组有影响对原数组无影响 NumPy字节交换NumPy Matrix矩阵库NumPy线性代数NumPy矩阵乘法NumPy和Matplotlib绘图NumPy IO操作

NumPy ndarray对象

语法格式:
numpy.array(object, dtype = None, copy = True, order = None, ndmin = 0)
参数说明:

object:表示一个数组序列。dtype:可选参数,通过它可以更改数组的数据类型。copy:可选参数,表示数组能否被复制,默认是True。order:以哪种内存布局创建数组,有3个可选值,分别是C(行序列)/F(列序列)/A(默认)。ndim:用于指定数组维度。 NumPy数据类型 定义结构化数据

通常情况下,结构化数据使用字段的形式来描述某个对象的特征。以下示例描述一位老师的姓名、年龄、工资的特征,该结构化数据其包含以下字段:

str字段:nameint字段:agefloat字段:salary

定义过程如下:

teacher = np.dtype([('name','S20'),('age','i1'),('salary','f4')])
#输出结构化数据  
print(teacher)  
#将其应用于ndarray对象  
a = np.array([('ycs','32','6357.50'),('hga','43','6856.80'),('jh','33','8376.30')],dtype = teacher)
print(a)  

输出结果:

[(‘name’,‘s20’),(‘age’,‘i1’),(‘salary’,’ [(b’ycs’, 32, 6357.5) (b’hga’, 43, 6856.8) (b’jh’, 33, 8376.3)]

其中字符串前加b是**把字符串变成bytes格式。python3默认的字符串格式是unicode,bytes是python2的str格式。

NumPy数组属性

    ndarray.ndim() 返回的是数组的维数
    示例如下:

    c = np.arange(24)  #随机生成一个一维数组
    print(c)
    print(c.ndim)  
    

    输出为:

    1

    ndarray.itemsize()
    返回数组中每个元素的大小(以字节为单位)

    #数据类型为int64,代表8字节
    x = np.array([1,2,3,4],dtype=np.int64)
    print(x.itemsize)
    

    输出为:

    8

NumPy创建数组 numpy.empty()

创建未初始化的数组,可以指定创建数组的形状(shape)和数据类型(dtype)以及数组元素在计算机内存中的储存顺序,默认顺序是“C”,即行优先顺序。语法格式如下:
numpy.empty(shape, dtype = float, order = 'C')

numpy.ones()

返回指定形状大小与数据类型的新数组,并且新数组中每项元素均用1填充,语法格式如下:
numpy.ones(shape, dtype = None, order = 'C')
举例:

arr1=np.ones((3,2),dtype=int)
print(arr1)  

得到结果:

[[1 1]
[1 1]
[1 1]]

numpy.asarray()

能将一个Python序列转换为ndarray对象,语法如下:
numpy.asarray(sequence, dtype = None, order = None)
其中sequence接受一个Python序列,可以是列表或者元组,举例:

I = [1,2,3,4,5,6,7]  
print(I)
a = np.asarray(I)
print(type(a))
print(a)  

结果:

[1,2,3,4,5,6,7]

[1 2 3 4 5 6 7]

numpy.frombuffer()

表示使用指定的缓冲区创建数组,语法:

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
其中

count表示要读取的数据位置,默认为-1,即读取所有数据;offset表示读取位置的起始位置,默认为0. numpy.fromiter()

把迭代对象转换为ndarray数组,其返回值是一个一维数组,语法:
numpy.fromiter(iterable, dtype, count = -1)
举例,使用内置函数range()创建列表对象,然后使用迭代器创建ndarray对象,代码如下:

list=range(6)
print(list)
#生成可迭代对象i
i = iter(list)
print(i)
#使用i迭代器,通过fromiter方法创建ndarray
array = np.fromiter(i,dtype=float)
print(array)  

结果:

(0,6)

[0. 1. 2. 3. 4. 5.]

NumPy创建区间数组 numpy.arange()

创建给定数值范围的数组,语法:
numpy.arange(start, stop, step, dtype)
例:

a = numpy.arange(1,10,2)  
print(a)

结果:

[1 3 5 7 9]

numpy.linspace()

在指定数值区间内,返回均匀间隔的一维等差数组,默认均分50份,语法:
numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None)
其中:

endpoint:默认为True,表示数列包含stop终止值,反之不包含;retstep:默认为true, 表示生成的数组中会显示公差项,反之不显示
例:

a = numpy.linspace(0, 50, num = 6)  
print(a)  
numpy.logspace()

创建等比数组,语法:
numpy.logspace(start, stop, num = 50, endpoint = True, base = 10.0, dtype = None)
其中:

base:对数函数的log底数,默认为10
例:

a = numpy.logspace(1, 2, num = 10, endpoint = True, dtype = float)  
print(a)  

结果:

[ 10. 12.91549665 16.68100537 21.5443469 27.82559402
35.93813664 46.41588834 59.94842503 77.42636827 100. ]

NumPy索引和切片

NumPy常用的索引方式有两种:基本切片与高级索引。

基本切片

    内置slice()函数
    语法:slice(start,stop,step)
    例:

    a = np.arange(-1,11,1)
    print(a)
    #生成切片对象
    s = slice(2,9,3) #不包括右边界
    print(a[s]) 
    

    结果:

    [-1 0 1 2 3 4 5 6 7 8 9 10]
    [1 4 7]

    冒号切片

    如果仅输入一个参数,则将返回与索引相对应的元素。对于上述示例来说[3]就会返回2。如[:9],则只会返回-1-7的所有数字,不包含第九个数。如是[2:]则会返回第三个数到最后一个数。如[2:9]则会返回第三个数到第九个数,即对两个索引值之间的所有元素进行切片,但不包括停止索引。

多维数组切片

例:

a = np.array([[1,2,3],[3,4,5],[5,6,7]])
print(a)
print(a[...,1]) #返回第二列
print(a[...,1:]) #返回第二列及其之后的列
print(a[1,...]) #返回第二行
print(a[1])  #返回第二行

结果:

[[1 2 3]
[3 4 5]
[5 6 7]]
[2 4 6]
[[2 3]
[4 5]
[6 7]]
[3 4 5]
[3 4 5]

NumPy高级索引 整数数组索引

例1

x = np.ndarray([[1,2],[3,4],[5,6]])
y = x[[0,1,2][0,1,0]] 
print(y)
得到位于(0,0)、(1,1)和(2,0)的数
结果:  
> [1 4 5]

例2
获取4*3数组的四个顶点元素,对应的行索引为[0,0]和[3,3],列索引为[0,2]和[0,2]

b = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(b)
r = np.array([[0,0],[3,3]])
c = np.array([[0,2],[0,2]])
d = b[r,c]
print(d)  

输出结果为

[[ 1 3]
[10 12]]

布尔数组索引
a = np.array([np.nan, 1+2j,2,np.nan,3,4,5])
print(a[~np.isnan(a)]) #去除非数字元素
print(a[np.iscomplex(a)]) #去除整数元素  

结果:

[1.+2.j 2.+0.j 3.+0.j 4.+0.j 5.+0.j]
[1.+2.j]

NumPy广播机制

NumPy中的广播机制(Broadcast)旨在解决不同形状数组之间的算术运算问题。
当两个数组形状不同,NumPy会自动触发广播机制。

NumPy遍历数组 nditer迭代器

可以配合for循环完成对数组元素的遍历。
例:

a = np.arange(0,60,5)
a = a.reshape(3,4)
for x in np.nditer(a):
    print(x)  

结果:

0 5 10 15 20 25 30 35 40 45 50 55

遍历顺序

在内存中,Numpy数组提供了两种存储数据的方式,分别是C-order(行优先顺序)和fortrant-order(列优先顺序)。
遍历数组和遍历数组的转置顺序是一样的,即它们在内存中的存储顺序是一样的。

可以C样式遍历数组的转置得到与遍历数组不同顺序的结果。例:

a = np.arange(0,60,5)
a = a.reshape(3,4)
for x in np.nditer(a):
    print(x)
for x in np.nditer(a.T):
    print(x)
for x in np.nditer(a.T.copy(order='C')):
    print(x)

得到结果分别为:

0 5 10 15 20 25 30 35 40 45 50 55
0 5 10 15 20 25 30 35 40 45 50 55
0 20 40 5 25 45 10 30 50 15 35 55
上述结果的原因为它们在内存中的存储方式不同

指定遍历顺序

可以通过nditer对象的order参数来指定数组的遍历的顺序。

for x in np.nditer(a, order = 'C'):
    print(x)
for x in np.nditer(a, order = 'F'):
    print(x)

得到结果:

0 5 10 15 20 25 30 35 40 45 50 55
0 20 40 5 25 45 10 30 50 15 35 55

修改数组元素值

nditer对象提供了一个可选参数op_flags,它表示能否在遍历数组时对元素进行修改。提供了三种模式:

read-onlyread-writewrite-only
例:

for x in np.nditer(a, op_flags=['readwrite']):      
    x[...]=2*x
    print(a) 

结果:

0 40 80 10 50 90 20 60 100 30 70 110

NumPy相关数组操作 数组变维
函数名称函数介绍
reshape在不改变数组元素的条件下,修改数组的形状。
flat返回一个迭代器,可以用for循环遍历其中的每一个元素。
flatten以一维数组的形式返回一份数组的副本,对副本的操作不会影响到原数组。
ravel返回一个连续的扁平数组(即展开的一维数组),与flatten不同,它返回的是数组视图(修改视图会影响原数组)。

例:

a = np.arange(9).reshape(3,3)
print(a)
for row in a:
    print(row)
for ele in a.flat:
    print(ele,end=",")

结果:

[[0 1 2]
[3 4 5]
[6 7 8]]
[0 1 2]
[3 4 5]
[6 7 8]
0,1,2,3,4,5,6,7,8,

数组转置
函数名称说明
transpose将数组的维度值进行对换,比如数组维度(4,2)使用该方法后为(2,4)。
ndarray.T与transpose使用方法相同。
rollaxis沿着指定的轴向滚动至规定的位置。
swapaxes对数组的轴进行对换。
修改数组维度操作

修改数组维度的操作主要由以下方法:

函数名称描述说明
broadcast生成一个模拟广播的对象。
broadcast_to将数组广播为新的形状。
expand_dims扩展数组的形状。
squeeze从数组的形状中删除一维项。
连接与分割数组操作

连接与分割数组是数组的两种操作方式

类型函数名称描述说明语法
连接数组方法concatenate沿指定轴连接两个或者多个相同形状的数组numpy.concatenate((a1,a2,...),axis)
stack沿着新的轴连接一系列数组
hstack按水平顺序堆叠序列中数组(列方向)numpy.hstack((a1,a2,...))
vstack按垂直方向堆叠序列中数组(行方向)
分割数组方法split将一个数组分割为多个子数组numpy.split(ary,indices_or_sections,axis)
hsplit将一个数组水平分割为多个子数组(按列)
vsplit将一个数组垂直分割为多个子数组(按行)
NumPy数组元素增删改查

主要有以下方法:

函数名称描述说明语法
resize返回一个指定形状的数组,若新数组比原数组大,则会copy原数组中的值对新数组进行填充。resize仅对原数组进行修改,没有返回值numpy.resize(arr,shape)
insert沿规定的轴将元素值插入到指定的元素前numpy.insert(arr,obj,values,axis)
append将元素添加到数组的末尾numpy.append(arr,values,axis=None)
delete删除某个轴上的子数组,并返回删除后的新数组numpy.delete(arr,obj,axis)
argwhere返回数组内符合条件的元素的索引值
unique用于删除数组中重复的元素,并按元素值由大到小返回一个新数组numpy.unique(arr,return_index,return_inverse,return_counts)
NumPy位运算

NumPy提供了以下位运算

序号函数位运算符描述说明
1bitwise_and&计算数组元素之间的按位与运算。
2bitwise_or|计算数组元素之间的按位或运算。
3invert~计算数组元素之间的按位取反运算。
4left_shift<<将二进制数的位数向左移。
5right_shift>>将二进制数的位数向右移。
NumPy字符串处理函数

NumPy提供了许多字符串处理函数,它们被定义在用于处理字符串数组的numpy.char这个类中,这些函数的操作对象是string_或者unicode_字符串数组。如下表所示:

函数名称描述
add()对两个数组相应位置的字符串做连接操作。
multiply()返回多个字符串副本,比如将字符串“hello”乘以3,则返回字符串“hello hello hello”
center()用于居中字符串,并将指定的字符填充在原字符串的左右两侧。
capitalize()将字符串第一个字母转换为大写。
title()标题样式,将每个字符串的第一个字母转换为大写形式。
lower()将数组中所有字符串的大学转换为小写。
upper()将数组中所有的字符串的小写转换为大写。
split()通过制定分隔符对字符串进行分割,并返回一个数组序列,默认分隔符为空格。
splitlines()以换行符作为分隔符来分隔字符串,并返回数组序列。
strip()删除字符串开头和结尾处的空字符
join()返回一个新的字符串,该字符串是以指定分隔符来连接数组中的所有元素
replace()用新的字符串替换原数组中指定的字符串
decode()用指定的编码格式对数组中元素依次执行解码操作
encode()用指定的编码格式对数组中元素依次进行编码操作
上述函数基于python内置的字符串函数实现。 NumPy数学函数 三角函数

NumPy中提供了用于弧度计算的 sin()、 cos() 和 tan() 三角函数。
若想验证反三角函数的结果,可以通过 numpy.degrees() 将弧度转换为角度来实现

import numpy as np 
arr = np.array([0, 30, 60, 90]) 
#正弦值数组
sinval = np.sin(arr*np.pi/180) 
print(sinval) 
#计算角度反正弦,返回值以弧度为单位
cosec = np.arcsin(sinval) 
print(cosec) 
#通过degrees函数转化为角度进行验证
print(np.degrees(cosec)) 
舍入函数

NumPy提供了三个舍入函数,介绍如下:

序号函数说明语法
1)numpy.around()该函数返回一个十进制数值,并将数值四舍五入到指定的小数位上numpy.around(a,decimals)
2)numpy.floor()该函数表示对数组中的每个元素向下取整数,即返回不大于数组中每个元素值的最大整数numpy.floor()
3)numpy.ceil()该函数与floor函数相反,表示向上取整numpy.ceil()
NumPy算术运算 加减乘除

NumPy数组的“加减乘除”算术运算,分别对应add(),substract()、multiply()以及divide()

注意:做算术运算时,输入数组必须具有相同的形状,或者符合数组的广播规则,才可以执行运算

其他重要的算术运算函数
序号函数说明
1numpy.reciprocal()该函数对数组中的每个元素取倒数,并以数组的形式将它们返回。当数组元素的数据类型int时,对于绝对值小于1的元素,返回值为0,而当数组中包含0元素时,返回值将出现overflow(inf)溢出提示
2numpy.power()该函数将a数组中的元素作为底数,把b数组中与a相对应的元素做幂,最后以数组形式返回两者的计算结果
3numpy.mod()返回两个数组相对应位置上元素相除后的余数,它与numpy.remainder()的作用相同
复数数组处理函数
序号函数说明
1numpy.real()返回复数数组的实部
2numpy.imag()返回复数数组的虚部
3numpy.conj()通过更改虚部的符号,从而返回共轭复数
4numpy.angle()返回复数参数的角度,该函数提供了一个deg参数,如果deg=True,则返回的值会以角度制来表示,否则以弧度制表示
NumPy统计函数
序号函数说明
1numpy.amin()沿指定的轴,查找数组中元素的最小值,并以数组形式返回,对于二维数组axis=1表示查找每行最小值,axis=0表示查找每列最小值
2numpy.amax()沿指定轴,查找数组中元素的最大值
3numpy.ptp()用于计算数组元素中最值之差,即(最大值-最小值),axis=1表示求每行最值之差
4numpy.percentile(a,q,axis)百分位数,是统计学中使用的一种度量单位。该函数表示沿指定轴,计算数组中任意百分比分位数
5numpy.median()用于计算a数组元素的中位数
6numpy.mean()该函数表示沿指定的轴,计算数组中元素的算术平均值(即元素之总和除以元素数量)
7numpy.average(a,axis=None,weights=None,returned=False)加权平均值是将数组中各数组值乘以相应的权数,然后再对权重值求总和,最后以权重的总和除以总的单位数(即因子个数)。如果未指定axis值则数组被展开成一维。
8numpy.var()方差
9numpy.std()标准差
NumPy排序和搜索功能 排序

排序算法特征主要体现在以下四个方面:执行速度,最坏情况下的复杂度,所需工作空间以及算法的稳定性。下表列举了三种排序算法:

种类速度最坏复杂度工作空间稳定性
quicksort(快速排序)1O(n^2)0不稳定
mergesort(归并排序)2O(n*log(n))~n/2稳定
heapsort(堆排序)3O(n*log(n))0不稳定
序号函数说明
1numpy.sort(a,axis,kind,order)对输入数组执行排序,并返回一个数组副本。
axis:如果没有指定axis,默认在最后一个轴上排序。axis=0表示按列排序,axis=1表示按行排序。
kind:默认为quicksort。
order表示要排序的字段。
2numpy.argsort()沿着指定的轴,对输入数组的元素值进行排序,并返回排序后的元素索引数组。
3numpy.lexsort()按键序列对数组进行排序,它返回一个已排序的索引数组,类似于numpy.argsort()
搜索
序号函数说明
1numpy.nonzero()该函数从数组中查找非零元素的索引位置
2numpy.where()该函数的返回值满足了给定条件的元素索引值
3numpy.extract()该函数的返回值是满足了给定条件的元素值
4numpy.argmax()该函数的返回值是最大值的索引值
5numpy.extract()该函数的返回值是最小值的索引值
NumPy副本和视图

副本是对原数组的深拷贝,和原数组具有不同的存储位置。视图是对原数组的引用,和原数组有相同的存储位置。

对原数组有影响
    赋值操作
    赋值操作是数组引用的一种方法。将a数组赋值给变量b,则它们具有相同的内存位置,无论操作哪个另一个都会受影响。切片创建视图
    使用切片可以创建视图数组,若要修改视图就会影响原数组
对原数组无影响
    ndarray.view()返回一个新生成的数组副本,不会影响到原数组。ndarray.copy()返回原数组的副本,对副本的修改不会影响到原数组。
NumPy字节交换

小端字节序(little-endian):表示低位字节排放在内存的低地址端,高位字节排放在高地址端,得到0x87654321大端字节序(big-endian):与小端字节序相反,得到0x12345678

numpy.ndarray.byteswap() 将数组中每个元素的字节顺序进行大小端调换。

NumPy Matrix矩阵库

NumPy提供了一个矩阵库模块numpy.matlib,该模块中的函数返回的是一个matrix对象,而非ndarray对象。
矩阵必须是二维的而数组可以是一维到任意维。矩阵由m行n列(m*n)元素排列而成,矩阵中的元素可以是数字、符号或数学公式等。

序号函数说明
1numpy.matlib.empty(shape,dtype,order)返回一个空矩阵。矩阵中会填充无意义的随机值。
shape:以元组的形式指定矩阵的形状。
order:有两种选择,C(行矩阵优先),F(列矩阵优先)
2numpy.matlib.zeros()创建一个以0填充的矩阵
3numpy.matlib.ones()创建一个以1填充的矩阵
4numpy.matlib.eye(n,M,k,dtype)返回一个对角线元素为1,而其他元素为0的矩阵。
n:返回矩阵的行数;
M:返回矩阵的列数,默认为n;
k:对角线的索引
dtype:矩阵中元素数据类型
5numpy.matlab.identity()返回一个给定大小的单位矩阵,矩阵的对角线元素为1,而其他元素均为0
6numpy.matlib.rand()创建一个以随机数填充,并给定维度的矩阵
NumPy线性代数

NumPy提供了numpy.linalg模块,该模块中包含了一些常用的线性代数计算方法

函数名称描述说明
numpy.dot两个数组的点积。将a数组的每一行元素与b数组的每一列元素相乘再相加,每一行列组合各输出一个值。
numpy.vdot两个向量的点积。即矩阵对应位置元素乘积之和。
numpy.inner两个数组的内积。即两数组每行相乘再相加,只有当数组为一维时结果与dot()相同。
numpy.matmul两个数组的矩阵积。返回两个矩阵的乘积,假如两个矩阵的维度不一样就会产生错误。
numpy.linalg.det计算输入矩阵的行列式。通过对角线元素求行列式(“一捺一撇”)。
numpy.linalg.solve求解线性矩阵方程,并以矩阵的形式表示线性方程的解。
inv计算矩阵的逆矩阵,逆矩阵与原始矩阵相乘,会得到单位矩阵。
NumPy矩阵乘法
函数说明
numpy.multiple()逐元素矩阵乘法,用于两个矩阵的逐元素乘法
numpy.matmul()矩阵乘积运算,用于计算两个数组的乘积,即矩阵a的行与矩阵b的列相乘再相加
numpy.dot()矩阵点积,用于计算两个矩阵的点积
对于三维矩阵a.reshape(2,2,3)以及b(2,3,2),matmul()函数会将其最后两维作为矩阵的两维,相当于有2*2的矩阵,得到2*2的结果,最后结果shape为(2,2,2)。 而dot()将数组的最后一维作为向量,得到(2*2)*(2*2)种结果,最后结果shape为(2,2,2,2)。 NumPy和Matplotlib绘图

格式化字符:

字符描述字符描述
'-'实线样式'--'短横线样式
'-.'点划线样式':'虚线样式
'.'点标记','像素标记
'o'圆标记'*'星形标记
'v'倒三角形标记'^'正三角形标记
'<'左三角形标记'>'右三角形标记
'1'上箭头标记'2'下箭头标记
'3'左箭头标记'4'右箭头标记
's'正方形标记'p'五边形标记
'h'六边形标记1'H'六边形标记2
'+'加号标记'X'X标记
'D'菱形标记'd'窄菱形标记
'|'竖直线标记'_'水平线标记

颜色字符:

字符颜色字符颜色
'b'蓝色'g'绿色
'r'红色'c'青色
'm'品红色'y'黄色
'k'黑色'w'白色

常用绘图函数:

函数说明
plt.subplot(nrows,ncols,index,**kwargs)该函数用三个整数描述子图的位置信息,这三个整数是行数、列数和索引值(此索引值从1开始)。例如plt.subplot(2,3,2)表示子图位于第1行第2列的第2个位置上。
plt.bar()可生成柱状图
numpy.histogram(array,bins=10,range=None,weights=None,density=False)直方图是一种表示数据概率分布的常用图形。该函数以直方图的形式表示一组数据的概率分布值。有两个返回值,分别是hist(直方图高度值)和bin_edges(数值区间范围)
plt.hist()该函数将一个输入数组和bins数组作为参数,并将其输出为直方图
NumPy IO操作

NumPy IO操作是以文件的形式从磁盘中加载ndarray对象。在此过程中NumPy以两种文件类型处理ndarray对象,分别对应不同的IO方法如下:

文件类型处理方法
二进制文件(以.npy结尾)load()和save(file,allow_pickle=True,fix_imports=True)
file:保存后的文件名,后缀为.npy。
allow_pickle:可选项,布尔值参数,允许使用pickle序列化保存数组对象。
普通文本文件loadtxt()和savetxt('filename文件路径',self.task,fmt="%d",delimiter=" ")
self.task:要保存数组的变量名
fmt="%d":指定保存文件的格式,默认是十进制
delimiter=" ":表示分隔符,默认以空格形式隔开
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号