美文网首页Numpyweb服务器
NumPy(数学和统计方法)

NumPy(数学和统计方法)

作者: GHope | 来源:发表于2018-11-10 12:11 被阅读3次

可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算。和sum、平均数mean以及标准差std等聚合计算(aggregation,通常叫做约简(reduction))。

求和以及平均数的数学方法

arr.mean(1)是“计算行的平均值”,arr.sum(0)是“计算每列的和”

个人理解为默认给axis赋的值表示维度,从最内层开始维度依次递减

cumsum 累积和 cumprod累积积

简单数学方法

用于布尔型数组的方法

bool相关用法

any(类似于python中的或)用于测试数组中是否存在一个或多个True,而all(类似于python中的且)则检查数组中所有值是否都是True, 这两个方法也能用于非布尔型数组,所有非0元素将会被当做True。

any 和 all

排序

极简排序

多维数组可以在任何一个轴向上进行排序

任意轴向排序

顶级方法np.sort返回的是数组的已排序副本,而就地排序则会修改数组本身。

唯一化以及其它的集合逻辑

找出数组中的唯一值并返回已排序的结果。

去重排序

函数np.in1d用于测试一个数组中的值在另一个数组中的成员资格,返回一个布尔型数组。

测试成员资格

数组的集合运算表

方法 说明
unique(x) 计算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的文件的。

读写磁盘数组数据

通过np.savez可以将多个数组保存到一个未压缩文件中。

压缩之后貌似是只能一个一个数组单独取

将数据压缩,可以使用numpy.savez_compressed

数据压缩

线性代数

矩阵乘法的dot函数

矩阵乘法

一个二维数组跟一个大小合适的一维数组的矩阵点积运算之后将会得到一个一维数组

运算结果演示

@符也可以用作中缀运算符,进行矩阵乘法

@做中缀运算符

伪随机数生成

用normal来得到一个标准正态分布的4×4样本数组

正态分布样本数组

Python内置的random模块则只能一次生成一个样本值。从下面的测试结果中可以看出,如果需要产生大量样本值,numpy.random快了不止一个数量级。

产生样本效率比较

numpy.random的数据生成函数使用了全局的随机种子。要避免全局状态,你可以使用 numpy.random.RandomState,创建一个与其它隔离的随机数生成器。

隔离随机数生成器

常用numpy.random的函数

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

示例:随机漫步

用np.random模块一次性随机产生1000个“掷硬币”结果(即两个数中任选一个),将其分别设 置为1或-1,然后计算累计和。

运气比较差

我们想要知道本次随机漫步需要多久才能距离初始0点至少10步远(任一方向均可)

最快距离远点十步

相关文章

网友评论

    本文标题:NumPy(数学和统计方法)

    本文链接:https://www.haomeiwen.com/subject/iilbxqtx.html