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字段:name
  • int字段:age
  • float字段: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数组属性

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

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

    输出为:

    1

  2. 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常用的索引方式有两种:基本切片与高级索引。

基本切片

  1. 内置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]

  2. 冒号切片

    • 如果仅输入一个参数,则将返回与索引相对应的元素。对于上述示例来说[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-only
  • read-write
  • write-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提供了以下位运算

序号 函数 位运算符 描述说明
1 bitwise_and & 计算数组元素之间的按位与运算。
2 bitwise_or | 计算数组元素之间的按位或运算。
3 invert ~ 计算数组元素之间的按位取反运算。
4 left_shift << 将二进制数的位数向左移。
5 right_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()

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

其他重要的算术运算函数

序号 函数 说明
1 numpy.reciprocal() 该函数对数组中的每个元素取倒数,并以数组的形式将它们返回。当数组元素的数据类型int时,对于绝对值小于1的元素,返回值为0,而当数组中包含0元素时,返回值将出现overflow(inf)溢出提示
2 numpy.power() 该函数将a数组中的元素作为底数,把b数组中与a相对应的元素做幂,最后以数组形式返回两者的计算结果
3 numpy.mod() 返回两个数组相对应位置上元素相除后的余数,它与numpy.remainder()的作用相同

复数数组处理函数

序号 函数 说明
1 numpy.real() 返回复数数组的实部
2 numpy.imag() 返回复数数组的虚部
3 numpy.conj() 通过更改虚部的符号,从而返回共轭复数
4 numpy.angle() 返回复数参数的角度,该函数提供了一个deg参数,如果deg=True,则返回的值会以角度制来表示,否则以弧度制表示

NumPy统计函数

序号 函数 说明
1 numpy.amin() 沿指定的轴,查找数组中元素的最小值,并以数组形式返回,对于二维数组axis=1表示查找每行最小值,axis=0表示查找每列最小值
2 numpy.amax() 沿指定轴,查找数组中元素的最大值
3 numpy.ptp() 用于计算数组元素中最值之差,即(最大值-最小值),axis=1表示求每行最值之差
4 numpy.percentile(a,q,axis) 百分位数,是统计学中使用的一种度量单位。该函数表示沿指定轴,计算数组中任意百分比分位数
5 numpy.median() 用于计算a数组元素的中位数
6 numpy.mean() 该函数表示沿指定的轴,计算数组中元素的算术平均值(即元素之总和除以元素数量)
7 numpy.average(a,axis=None,weights=None,returned=False) 加权平均值是将数组中各数组值乘以相应的权数,然后再对权重值求总和,最后以权重的总和除以总的单位数(即因子个数)。如果未指定axis值则数组被展开成一维。
8 numpy.var() 方差
9 numpy.std() 标准差

NumPy排序和搜索功能

排序

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

种类 速度 最坏复杂度 工作空间 稳定性
quicksort(快速排序) 1 O(n^2) 0 不稳定
mergesort(归并排序) 2 O(n*log(n)) ~n/2 稳定
heapsort(堆排序) 3 O(n*log(n)) 0 不稳定
序号 函数 说明
1 numpy.sort(a,axis,kind,order) 对输入数组执行排序,并返回一个数组副本。
axis:如果没有指定axis,默认在最后一个轴上排序。axis=0表示按列排序,axis=1表示按行排序。
kind:默认为quicksort。
order表示要排序的字段。
2 numpy.argsort() 沿着指定的轴,对输入数组的元素值进行排序,并返回排序后的元素索引数组。
3 numpy.lexsort() 按键序列对数组进行排序,它返回一个已排序的索引数组,类似于numpy.argsort()

搜索

序号 函数 说明
1 numpy.nonzero() 该函数从数组中查找非零元素的索引位置
2 numpy.where() 该函数的返回值满足了给定条件的元素索引值
3 numpy.extract() 该函数的返回值是满足了给定条件的元素值
4 numpy.argmax() 该函数的返回值是最大值的索引值
5 numpy.extract() 该函数的返回值是最小值的索引值

NumPy副本和视图

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

对原数组有影响

  1. 赋值操作
    赋值操作是数组引用的一种方法。将a数组赋值给变量b,则它们具有相同的内存位置,无论操作哪个另一个都会受影响
  2. 切片创建视图
    使用切片可以创建视图数组,若要修改视图就会影响原数组

对原数组无影响

  1. ndarray.view()返回一个新生成的数组副本,不会影响到原数组。
  2. ndarray.copy()返回原数组的副本,对副本的修改不会影响到原数组。

NumPy字节交换

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

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

NumPy Matrix矩阵库

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

序号 函数 说明
1 numpy.matlib.empty(shape,dtype,order) 返回一个空矩阵。矩阵中会填充无意义的随机值。
shape:以元组的形式指定矩阵的形状。
order:有两种选择,C(行矩阵优先),F(列矩阵优先)
2 numpy.matlib.zeros() 创建一个以0填充的矩阵
3 numpy.matlib.ones() 创建一个以1填充的矩阵
4 numpy.matlib.eye(n,M,k,dtype) 返回一个对角线元素为1,而其他元素为0的矩阵。
n:返回矩阵的行数;
M:返回矩阵的列数,默认为n;
k:对角线的索引
dtype:矩阵中元素数据类型
5 numpy.matlab.identity() 返回一个给定大小的单位矩阵,矩阵的对角线元素为1,而其他元素均为0
6 numpy.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=" ":表示分隔符,默认以空格形式隔开

你可能感兴趣的:(python,学习,python,numpy)