Python numpy

将条件逻辑表示为数组运算

numpy.where函数是三元表达式x if condition else y的矢量化版本。

numpy.where(cond,arr1,arr2)

数学和统计方法
可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计运算。sum、mean以及标准差std等聚合计算(sggregation,通常叫做约简(reduction))既可以当作实例方法调用,也可以当作顶级Numpy函数使用
mean函数功能:求取均值
经常操作的参数为axis,以m*n矩阵举例:
axis=0:压缩行,对各列求均值,返回一个1*n矩阵
axis=1:压缩列对各行求均值,返回m*1矩阵


基本数组统计方法
方法说明
sum对数组中全部或某轴向的元素求和。零长度的数组的sum为0
mean算术平均数。零长度的数组的mean为NaN
std/var分别为标准差和方差,自由度可调(默认为n)
min/max最大值和最小值
argmin/argmax分别为最大和最小元素的索引
cumsum所有元素的累计和
cumprod所有元素的累计积
用于布尔型数组的方法
在上面这些方法中,布尔值会强制被转换为1(True)和0(False)。因此,sum经常被用来对布尔型数组中的True值计数。

另外还有两个方法any和all,他们对布尔型数组非常有用。any用于测试数组中是否存在一个或多个True,而all则检查数组中所有值是否都是True。


排序
跟Python内置的列表类型一样,Numpy数组也可以通过sort方法就地排序:


多维数组可以在任何一个轴上进行排序,只需将轴编号传给sort即可:



唯一化以及其他的集合逻辑
Numpy提供了一些针对一维ndarray的基本集合运算。最常用的可能要数np.unique了,它用于找出数组中的唯一值并返回已排序的结果:


数组的集合运算
方法说明
unique计算x中的唯一元素,并返回有序结果
intersect1d(x,y)计算x和y中的公共元素,并返回有序结果
union1d(x,y)计算x和y的并集,并返回有序结果
in1d(x,y)得到一个表示"x的元素是否包含于y"的布尔型数组
setdiff1d(x,y)集合的差,即元素在x中且不在y中
setxor1d(x,y)集合的对称差,即存在与一个数组中但不同时存在与两个数组元素
用于数组的文件输入输出
Numpy能够读写磁盘上的文本数据或二进制数据。
将数组以二进制格式保存在磁盘
np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的。
arr=np.arange(10)
np.save('some_array',arr)
如果文件路径末尾没有扩展名.npy,则扩展名会自动加上。然后就可以通过np.load读取磁盘上的数组:
np.load('some_array.npy')
array([0,1,2,3,4,5,6,7,8,9])
通过np.savez可以将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可:
np.savez('array_archive.npz',a=arr,b=arr)
加载.npz文件时,你会得到一个类似字典的对象,该对象会对各个数组进行延迟加载:
arch=np.load('array_archive.npz')
arch['b']


存取文本文件
从文件中加载文本是一个非常标准的任务。np.loadtxt与np.savetxt执行的是相反的操作:将数组写到某种分隔符隔开的文本文件中。genfromtxt跟loadtxt差不多,只不过它面向的是结构化数组和缺失数据处理。



线性代数
线性代数(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分。不像某些语言(如Matlab),通过*对两个二维数组相乘得到的是一个元素级的积,而不是一个矩阵点积。因此,Numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方法也是numpy命名空间中一个函数)


numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。他们跟MATLAB和R等语言所使用的是相同的行业标准级Fortran库。

常用的numpy.linalg函数
方法说明
diag以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵,(非对角线元素为0)
dot矩阵乘法
trace计算对角线元素的和
det计算矩阵行列式
eig计算方阵的本征值和本征向量
inv计算方阵的逆
pinv计算矩阵的Moore-Penrose伪逆
qr计算qr分解
svd计算奇异值分解(SVD)
solve解线性方程组Ax=b,其中A为一个方阵
lstsp计算Ax=b的最小二乘解



随机数生成
numpy.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。例如,你可以用normal来得到一个标准正太分布的4*4样本数组


部分numpy.random函数
方法说明
seed确定随机数生成器的种子
permutation返回一个序列随机排列或返回一个随机排列的范围
shuffle对一个序列就地随机排列
rand产生均匀分布的样本值
randint从给定的上下限范围内随机选取整数
randn产生正太分布(平均值为0,标准差为1)的样本值
binomial产生二项分布的样本值
normal产生正态(高斯)分布的样本值
beta产生Beta分布的样本值
chisquare产生卡方分布的样本值
gamma产生Gamma分布的样本值
uniform产生在[0,1]中均匀分布的样本值


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值