NumPy
2021-12-31 11:09:52 0 举报
NumPy
作者其他创作
大纲/内容
NumPy简介
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量机器学习框架的基础库!
NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:
一个强大的N维数组对象ndrray;
比较成熟的(广播)函数库;
用于整合C/C++和Fortran代码的工具包;
实用的线性代数、傅里叶变换和随机数生成函数
NumPy的优点
代码便捷
NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;
NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多
使用
Numpy数据类型
bool_,存储为一个字节的布尔值(真或假)
int_,默认整数,相当于 C 的long,通常为int32或int64
intc,相当于 C 的int,通常为int32或int64
intp,用于索引的整数,相当于 C 的size_t,通常为int32或int64
int8,字节(-128 ~ 127)
int16,16 位整数(-32768 ~ 32767)
int32,32 位整数(-2147483648 ~ 2147483647)
int64,64 位整数(-9223372036854775808 ~ 9223372036854775807)
uint8,8 位无符号整数(0 ~ 255)
uint16,16 位无符号整数(0 ~ 65535)
uint32,32 位无符号整数(0 ~ 4294967295)
uint64,64 位无符号整数(0 ~ 18446744073709551615)
float_,float64的简写
float16,半精度浮点:符号位,5 位指数,10 位尾数
float32,单精度浮点:符号位,8 位指数,23 位尾数
float64,双精度浮点:符号位,11 位指数,52 位尾数
complex_,complex128的简写
complex64,复数,由两个 32 位浮点表示(实部和虚部)
complex128,复数,由两个 64 位浮点表示(实部和虚部)
ndarray数组
Numpy中定义的最重要的对象是成为ndarray的N维数组类型。它描述相同类型的元素集合。可以使用基于零的索引访问集合中的项目。
常用ndarray属性
dtype
shape
ndim
size
T
举例说明:
常用ndarray方法
reshape(…) / resize(…)
reshape: 返回一个shape格式的数组的副本, 原数组shape不发生改变
resize: 修改数组的shape
举例说明
flatten() / ravel()
flatten: 返回展平数组,原数组不改变
ravel: 修改数组的shape为(n, ),即展平数组
举例说明
astype(dtype)
返回指定元素类型的数组副本
fill()
将数组元素全部设定为一个标量值
sum() / prod()
sum: 计算所有数组元素的和
prod: 计算所有数组元素的积
举例说明
mean() / var() / std()
mean: 返回数组元素的均值
var: 返回数组元素的方差
std: 返回数组元素的标准差
max() / min() / ptp() / median()
max: 返回数组元素的最大值
min: 返回数组元素的最小值
ptp: 返回数组元素的取值范围(最大值与最小值之间的峰值)
median: 返回数组元素的中位数
举例说明
argmax() / argmin()
返回最大值/最小值的索引
sort()
对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
view() / copy()
view创造一个新的数组对象指向同一数据;copy是深复制
tolist()
tolost()函数用于把一个矩阵转化为list列表
compress()
返回满足条件的元素构成的数组
numpy.compress(condition, a, axis=None, out=None)
condition: 1-D array of bools
a: 从中提取零件的数组
axis: : int, 可选参数
out: : ndarray, 可选参数
举例说明:
T()
作用于矩阵,用于求矩阵的转置
举例说明
I()
求矩阵的逆矩阵,逆矩阵在计算中是经常要用到的,例如一个矩阵A,求A的逆矩阵B,即存在矩阵B是AB=I(I是单位)
举例说明
power()
数组的元素分别求n次方,x2可以是数字,也可以是数组,但是x1和x2的列数要相同。
举例说明
unique()
去除数组中的重复数字,并进行排序之后输出
举例说明
ceil(x, y)
限制元素范围,进一法,即向上取整。x 表示输入的数据 y float类型 表示每个元素的上限。
numpy.random.permutation(x)
随机生成一个排列或返回一个 range,如果x 是一个多维数组,对原来的数组进行重新洗牌(即随机打乱原来的元素顺序)
函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序);区别在于shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。
举例说明
ndarray数组的创建
一维数组的创建
使用arange()函数创建一维有序数组
使用array()函数创建数组
由元组序列构成的一维数组
由列表序列构成的一维数组
二维数组的创建
使用元组套元组的方式
使用列表套列表的方式
高维数组的创建
高维数组的创建就不赘述了,构建方法仍然是套的方式
特殊数组的创建
numpy.ones()
举例说明
numpy.zeros()
举例说明
numpy.empty()
numpy.empty(shape, dtype = float, order = 'C')
注意:数组为随机值,因为他们未初始化。
举例说明
numpy.eye() 和 numpy.identity()
举例说明
numpy.ones_like() 和 numpy.zero_like() 和 numpy.empy_like()
举例说明
ndarray数组的保存/读取
ndarray对象可以保存到磁盘文件并从磁盘文件加载
numpy.save 和 numpy.load
保存一个数组到一个二进制的文件中,保存格式是.npy
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
file:文件名/文件路径
arr:要存储的数组
allow_pickle:布尔值,允许使用Python pickles保存对象数组(可选参数,默认即可)
fix_imports:为了方便Pyhton2中读取Python3保存的数据(可选参数,默认即可)
举例说明:
numpy.savez 和 numpy.load
保存数组到一个二进制的文件中,但是厉害的是,它可以保存多个数组到同一个文件中,保存格式为.npz,它们其实就是多个前面np.save的保存的npy,再通过打包(未压缩)的方式把这些文件归到一个文件上,不行你再去解压npz文件就知道自己保存的是多个npy。
numpy.savez(file, *args, **kwds) 和 numpy.load
file:文件名/文件路径
*args:要存储的数组,可以写多个,如果没有给数组指定Key,Numpy将默认从'arr_0','arr_1'的方式命名
kwds:(可选参数,默认即可)
举例说明:
numpy.savetxt() 和 numpy.loadtxt()
以简单文本文件格式存储和获取数组数据,通过savetxt()和loadtxt()函数来完成的。
csv文件转化为npy格式
下面有一个csv文件的数据,我想将其转化为npy格式,数据内容如下
首先,数据是有索引,序列的,所以我们读取的时候要注意,转化代码如下:
ndarray数组的切片和索引
nadarray 对象中的元素遵循基于零的索引,有三种可用的索引方法类型:字段访问,基础切片和高级索引。
多维数组
一维数组
ndarray数组
ndarray数组
matrix矩阵
常用的函数
mat()
mat()函数和array()函数的区别
Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价。
举例说明
mat()函数创建常见的矩阵
full()
numpy.full(shape,fill_value=num)
fill_value 用来填充的值,可以是数字,也可以是字符串
举例说明
nonzero()
nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)函数。
它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。
举例说明
当使用布尔数组直接作为下标对象护着元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标计算。
常见的矩阵运算
矩阵相乘(*)
举例说明
矩阵点乘(multiply)
举例说明
矩阵求逆变换(.I)
矩阵求转置(.T)
矩阵求对应列行的最大值,最小值,和
numpy.max() 最大值
numpy.min() 最小值
numpy.sum() 和
矩阵的分隔和合并
矩阵的分割,同列表和数组的分割一致
矩阵的合并
vstack
hstack
矩阵,列表,数组的转换
列表可以修改,并且列表中元素可以使不同类型的数据
numpy中数组,同一个数组中所有元素必须为同一个类型
numpy中的矩阵与数组、列表的转换
matrix.getA()
矩阵的切片
行操作
列操作
0 条评论
下一页
为你推荐
查看更多