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

python机器学习基础--numpy库

Python 更新时间:发布时间: 百科书网 趣学号

目录
  • numpy库
    • 数据维度的python表示
    • 数组对象ndarray
    • 数组创建与变换
    • 数组变换
    • 数组操作
    • 数组运算
    • numpy数据存取
      • csv文件存储
        • 案例1:使用下面代码生成一个csv文件[^1]
      • csv文件读取
        • 案例2:使用loadtxt()函数读取一个csv文件
      • 多维数据存取
        • 案例3:存储并读取一个包含维数据的文件
    • 随机数函数
        • 案例4:使用随机数函数生成随机数组
    • 统计函数
        • 案例5:使用统计函数进行计算
    • 梯度函数
        • 案例6:梯度函数小测

numpy库

开源的科学计算基础库
本篇文章参考中国大学MOOC嵩天老师的课程:python数据分析与展示

数据维度的python表示

一维数组

二维数据

多维数据

高维数据

数组对象ndarray

数据对象特点

  1. 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
  2. 设置专门的数组对象,可以提升这类应用的运算速度
  3. 数组采用相同的数据类型,有利于节省运算和储存空间

关于ndarray

  1. ndarray是一个多维数组对象,由两部分构成
    (1)实际的数据
    (2)描述这些数据的元数据(数据维度、数据类型等等)
  2. ndarray数组要求所有数据类型相同,数据下标从0开始
  3. 在程序中,ndarray的别名是array
  4. np.array()将数组输出为[ ]形式,元素之间由空格分开
    轴(axis)用于保存数据的维度
    秩(rank)轴的数量

ndarray对象的属性

属性描述
.ndim
.shape对象的形状,对应矩阵的n行m列
.size对象元素的个数
.dtype对象中元素类型
.itemsize对象中每个元素的大小,以字节为单位

ndarray对象的意义

  1. 去掉元素间运算所需的循环,使得一维向量更像单个数据
  2. 数组对象采用相同的数据类型,有助于节省运算和存储空间
数组创建与变换

创建方法

  1. 利用列表、元组等类型创建ndarray

  1. 使用numpy中的函数创建
函数描述
numpy.arange(n)返回ndarray类型,元素从0到1
ones(shape)生成一个全1的数组,
zeros(shape)生成一个全0的数组
full(shape,val)根据shape生成一个数组,每个元素都是val
eye(n)生成一个正方n*n的单位矩阵,对角线为1,其余为0
ones_like(a)根据a的形状生成一个全1的数组
zeros_like(a)根据a的形状生成一个全0的数组
full_like(a,val)根据a的形状生成一个每个元素都是val的数组

  1. 其他方法创建
函数描述
linspace()根据起止数据等间距填充数据形成数组
concatenate()将两个或多个数组合并成一个新的数组

数组变换

对于创建后的数组进行维度变换或元素类型变换
维度变换

方法描述
reshape(shape)不改变数组元素,返回一个shape形状的数组,不改变原数组
resize(shape)与reshape功能相同,改变原数组
swapaxes(ax1,ax2)将数组两个维度调换
flatten()对数组降维,返回折叠后的一维数组,原数组不变

下面我们来看看这些方法的作用

类型转换

函数描述
.astype(newtype)创建新的数组,数据相同,类型也可能相同
.tolist()数组向列表转换

从下面的例子中我们可以看出,转换数组元素的类型时并未改变原数组,此外,如果参数newtype使用numpy中的数据类型时未知名精度,程序会提出警告

下面我们生成一个列表

数组操作

索引和切片
一维数组索引

多维数组索引

多维数组切片

数组运算

数组与标量之间的运算

数组中的每一个元素参与运算

一元函数
对数组中的数据执行元素级运算

函数描述
np.abs(x) /np.fabs(x)求数组x各元素的绝对值
np.sprt(x)求数组x中各元素平方根
np.square(x)各元素平方
np.logn(x)(n为底数)求各元素对数值
np.ceil(x)求各元素ceiling值
np.rint(x)各元素四舍五入的值
np.modf(x)将各元素小数部分和整数部分分为两个独立的数组返回
np.sin()/cos()…各元素的三角函数值
np.exp(x)各元素指数值
np.sign(x)各元素符号值,-1(-),0,1(+)

二元函数
两个数组之间的元素运算

函数描述
+、-、*、/、**两个数组各元素对应进行运算
np.copysign(x,y)将y中各元素符号赋值给数组x对应的元素
<、>、<=、>=、!=、==算术比较,产生布尔类型
np.mod(x,y)元素级模运算

numpy数据存取 csv文件存储

语法格式:np.savetxt(frame,array,format,delimiter)

参数描述
frame文件(可以是压缩文件),字符串或产生器
array存入文件的数组
format写入文件的格式,如%d,%f
delimiter分割字符串,默认空格
案例1:使用下面代码生成一个csv文件1

打开文件我们可以看到里面的数据

csv文件读取

语法格式2:np.loadtxt(frame,dtype,delimiter,unpack)

参数描述
frame文件(可以为压缩文件),字符串或产生器
dtype数据类型
delimiter分割字符串
unpack为True时,读入变量被写入不同属性
案例2:使用loadtxt()函数读取一个csv文件

多维数据存取

多维数据存储
语法格式:array.tofile(frame,sep,format)

参数名描述
frame文件,字符串
seq分割字符串
format写入文件的数据格式,如%d

多维数据读取
语法格式:np.fromfile(frame,dtype,count,sep)

参数描述
frame文件,字符串
dtype读取数据类型
count读入元素个数
sep数据分割字符串

这种方法存取时需要知道存入文件时数组的维度和元素类型3

案例3:存储并读取一个包含维数据的文件

随机数函数

np.random的随机数函数

函数描述
rand(d0,d1,…dn)根据d0-dn创建随机数数组,浮点数,范围[0,1),均匀分布
randn(d0,d1…dn)根据d0-dn创建随机数函数,正态分布
ranint(low,high,shape)根据shape创建随机整数,范围为(low,high)
seed(s)随机数种子s
shuffle(a)根据数组第一个轴随机排列,改变原数组
permutation(a)根据数组第一个轴随机排列,不改变原数组
choice(a[,size,replace,p])从一维数组中以概率p抽取元素,形成size形状的新数组,replace代表是否可以重用元素,默认Flase
uniform(low,high,size)产生具有均匀分布的数组,范围(low,high),size代表形状
normal(loc,scale,size)产生具有正态分布的数组,loc代表均值,scale代表标准差,size代表形状
poisson(lam,size)产生具有泊松分布的数组,lam代表随机事件发生率,size代表形状
案例4:使用随机数函数生成随机数组


下面我们对生成的数组进行变化


下面我们分别生成具有均匀分布和正态分布特征的数组

统计函数
函数描述
sum(a,axis)根据axis 计算数组a中相关元素之和
mean(a,axis)根据axis计算数组a相关元素期望
average(a,axis,weights)根据axis计算数组a相关元素加权平均值
std(a,axis)根据axis计算数组a相关元素标准差
var(a,axis)根据axis计算数组a相关元素方差
min(a)/max(a)计算数组中的最小/最大元素
argmin(a)/argmax(a)数组中最小/最大元素降一维对应的下标
unravel_index(index,shape)将一维坐标转换为多维shape状
ptp(a)数组中最小和最大元素数值之差
median(a)数组中元素的中位数
案例5:使用统计函数进行计算


下面我们尝试获得数组中的最小和最大值

梯度函数
函数描述
np.gradient(f)计算数组f中元素的梯度,当f为多维,返回每个维度的梯度1
案例6:梯度函数小测


  1. 梯度是连续值之间的变化率,即斜率 ↩︎ ↩︎

  2. 注意:
    1, csv只能有效存储一维和二维数据
    2, np中的存储和读取函数都只能有效存储一维和二维数据 ↩︎

  3. 多维数据存储(tofile()函数)和读取方法(fromfile()函数)需要配合使用,可以通过元数据文件来存储额外信息 ↩︎

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/294375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号