快速入门numpy(二)

这篇博客主要介绍了numpy的通用函数,包括元素级计算、数组数据处理,特别是where函数的应用。还讨论了数组的输入输出、线性代数操作如矩阵乘法和线性代数函数,以及伪随机数生成。通过实例展示了如何利用numpy进行矢量化运算,提高数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

通用函数(元素级)

这边就是一些计算的函数,大家熟悉一下就成,如果用到可以查询相关的文档。
在这里插入图片描述
计算x和y中元素级别最大的元素
在这里插入图片描述

modf函数,它会返回浮点数数组的小数和整数部分
在这里插入图片描述

这边放一些函数表
在这里插入图片描述
在这里插入图片描述

利用数组进行数据处理

这一部分涉及的内容也比较多,比较重要
NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。⽤数组表达式代替循环的做法,通常被称为⽮量化。
书上有一个例子,但是为好像不是太理解,这边不影响numpy的学习,所以为就跳过了。

将条件逻辑表述为数组运算
这边其实就一个重要的函数where,注意这是重点

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

xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array([True, False, True, True, False])

假设我们想要根据cond中的值选取xarr和yarr的值:当cond中的
值为True时,选取xarr的值,否则从yarr中选取。
要想实现这个选择,我们一般会这么写,还是要用到循环

result = [(x if c else y)
          for x, y, c in zip(xarr, yarr, cond)]
result

这样一点都体现不出我们numpy的优势,我们要搞矢量化
在这里插入图片描述

np.where的第⼆个和第三个参数不必是数组,它们都可以是标量值。在数据分析⼯作中, where通常⽤于根据另⼀个数组⽽产⽣⼀个新的数组。假设有⼀个由随机数据组成的矩阵,你希望将所有正值替换为2,将所有负值替换为-2。若利⽤np.where,则会⾮常简单:
在这里插入图片描述
使⽤np.where,可以将标量和数组结合起来。例如,我可⽤常数
2替换arr中所有正的值:
在这里插入图片描述
数学和统计⽅法
在这里插入图片描述

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

累加函数、累乘函数
在这里插入图片描述

其他一些统计函数
在这里插入图片描述

⽤于布尔型数组的⽅法
在上⾯这些⽅法中,布尔值会被强制转换为1( True)和0( False)。因此, sum经常被⽤来对布尔型数组中的True值计数:
在这里插入图片描述
另外还有两个⽅法any和all,它们对布尔型数组⾮常有⽤。 any⽤于测试数组中是否存在⼀个或多个True,⽽all则检查数组中所有值是否都是True:
在这里插入图片描述

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

这里主要是就地排序和排序副本两种,需要加以区别
在这里插入图片描述

在这里插入图片描述

唯⼀化以及其它的集合逻辑
这边看代码,其实没什么不好理解的
在这里插入图片描述

另⼀个函数np.in1d⽤于测试⼀个数组中的值在另⼀个数组中的成员资格,返回⼀个布尔型数组:
在这里插入图片描述

其他相关函数
在这里插入图片描述

数组文件的输入输出

save和load,这里很自然,很多文件都是这样的保存和读取
在这里插入图片描述

通过savez可以保存多个数组到一个未压缩文件中
在这里插入图片描述

线性代数

矩阵乘法
在这里插入图片描述

x.dot(y)等价于np.dot(x, y)

@符(类似Python 3.5)也可以⽤作中缀运算符,进⾏矩阵乘

x @ np.ones(3)

numpy.linalg中有⼀组标准的矩阵分解运算以及诸如求逆和⾏列式之类的东⻄。它们跟MATLAB和R等语⾔所使⽤的是相同的⾏业标准线性代数库,如BLAS、 LAPACK、 Intel MKL( Math Kernel Library,可能有,取决于你的NumPy版本)
在这里插入图片描述

在这里插入图片描述

具体的一些函数可以查表
在这里插入图片描述

伪随机数生成

比python自带的高级多的随机数

numpy.random模块对Python内置的random进⾏了补充,增加了⼀些⽤于⾼效⽣成多种概率分布的样本值的函数。例如,你可以⽤normal来得到⼀个标准正态分布的4×4样本数组
在这里插入图片描述

我们说这些都是伪随机数,是因为它们都是通过算法基于随机数
⽣成器种⼦,在确定性的条件下⽣成的。你可以⽤NumPy的
np.random.seed更改随机数⽣成种⼦
在这里插入图片描述
上面的两次生成是一样的

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值