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

arr.mean(1)是“计算行的平均值”,arr.sum(0)是“计算每列的和”
个人理解为默认给axis赋的值表示维度,从最内层开始维度依次递减
cumsum
累积和 cumprod
累积积

用于布尔型数组的方法

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

排序

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

顶级方法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步远(任一方向均可)

网友评论