Python NumPy 函数
🍦 NumPy数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操作,此行为在计算机科学中被称为局部性。
1 Ufunc
- Ufunc
- 即通用函数,指对ndarray对象进行操作的NumPy函数,用于实现矢量化。
- ufunc提供了广播和其他方法,对计算非常有帮助,也提供了额外的参数。
- out:复制返回值的输出数组。
- dtype:定义元素的返回类型。
- where:布尔数组或条件定义操作应在哪里发生。
- 矢量化:将迭代语句转换为基于向量的操作,现代CPU优化了此类操作,速度更快。
- 例如:添加两个列表
[1、2、3、4]和[4、5、6、7]的元素。- 方法一:先遍历两个列表,然后再对列表的每个元素求和。
- 方法二:ufunc提供了
add(x, y)函数,会产生相同的结果。
1 | |
- 创建Ufunc
- 创建ufunc,必须定义一个函数,类似Python中使用普通函数。
- 用
frompyfunc()将其添加到NumPy ufunc库中,有以下参数。- function:函数名称。
- inputs:输入参数(数组)的数量。
- outputs:输出参数(数组)的数量。
- 检查是否为ufunc函数,应返回
<class 'numpy.ufunc'>。 - if语句中测试函数是否为ufunc,需要使用
numpy.ufunc值。
1 | |
2 简单算术
- 简单算术
- 加:
add()函数将两个数组的内容相加,并在一个新数组中返回结果。 - 减:
subtract()函数将两个数组的内容相减,并在一个新数组中返回结果。 - 乘:
multiply()函数将两个数组的内容相乘,并在一个新数组中返回结果。 - 除:
divide()函数将两个数组的内容相除,并且在一个新数组中返回结果。 - 幂:
power()函数将一个数组的值乘以另一个数组值的幂并在新数组中返回结果。 - 余:
mod()和remainder()函数都会在一个新数组中返回两个数组值相除的余数。 - 商和模:
divmod()函数,返回值是两个数组,第一个数组包含商,第二个数组包含模。 - 绝对值:
absolute()和abs()函数,尽量用absolute(),避免与math.abs()混淆。
- 加:
1 | |
2-1 四舍五入
- 四舍五入
- NumPy中主要有如下五种对小数进行四舍五入的方法。
- 通过
around()函数将元素四舍五入到小数点后的指定位。 trunc()和fix()函数删除小数并返回最接近零的浮点数。- 使用
ceil()函数将小数四舍五入到最接近的较高整数(向上取整)。 - 使用
floor()函数将小数四舍五入到最接近的较低整数(向下取整)。
1 | |
2-2 对数函数
- 对数函数
- NumPy提供了以e、2和10为底的log函数,不提供指定底数的log函数。
- 若无法计算log函数,那么所有的log函数都将在元素中放置-inf或inf。
1 | |
2-3 数组求和
- 数组求和
- 加法是在两个参数之间完成的,而求和则是在n个元素之间进行的。
- 轴上求和:指定
axis=1,NumPy将对每个数组中的数字进行求和。 - 部分求和:使用
cumsum()函数,例如[1, 2, 3]部分求和为[1, 1+2, 1+2+3]。
1 | |
2-4 数组乘积
- 数组乘积
- 查找数组中元素的乘积,可以使用
prod()函数。 - 轴上乘积:该乘积方式指定了
axis=1,NumPy将会返回每个数组的乘积。 - 部分乘积:使用
cumprod()函数,如[1, 2, 3]部分乘积[1, 1*2, 1*2*3]。
- 查找数组中元素的乘积,可以使用
1 | |
2-5 数组差集
- 数组差集
- 使用
diff()函数,例如:数组[1, 2, 3]的差集是[2-1, 3-2]。 - 通过给定参数n重复执行操作,如n=2,
[1, 2, 3]差集再差集是[1-1]。
- 使用
1 | |
3 三角函数
- 三角函数
- NumPy提供正弦函数
sin()、余弦函数cos()和正切函数tan()。 - 三角函数默认将弧度作为参数
- 通过
deg2rad()函数,可以将数组中的所有值转换为弧度。 - 使用
rad2deg()函数,可以将数组中的所有值转换为度数。
- 通过
- 并且提供了反正弦
arcsin()、反余弦arccos()以及反正切arctan(),生成弧度值(角度)。 - NumPy提供
hypot()函数,基于毕达哥拉斯定理(即勾股定理)获取基值和垂直值并产生斜边。
- NumPy提供正弦函数
1 | |
4 双曲函数
- 双曲函数
- NumPy提供双曲正弦函数
sinh()、双曲余弦函数cosh()和双曲正切函数tanh()。 - 还提供了反双曲正弦
arcsinh()、反双曲余弦arccosh()和反双曲正切arctanh()。
- NumPy提供双曲正弦函数
1 | |
5 集合操作
- 集合操作
- 创建一个集合数组,集合数组只能是一维数组。
unique():可以从数组中查找唯一元素(集合)。union1d():可以查找两个数组的唯一值(并集)。intersect1d():仅查找两个数组都存在的值(交集)。- 可选参数assume_unique为True时,加快计算速度。
- 在处理集合时,assume_unique应始终设置为True。
setdiff1d():仅查找一个数组中不存在于另一个数组中的值(差集),参数assume_unique同上。setxor1d():只属于一个集合不属于另一集合的元素集合(对称差集),参数assume_unique同上。
1 | |
6 最小公倍数
- 最小公倍数
- 使用
lcm()函数,可以查找两个数的最小公倍数。 - 查找数组中所有值的最小公倍数用
reduce()方法。
- 使用
1 | |
7 最大公约数
- 最大公约数
- 使用
gcd()函数,可以查找两个数的最大公约数。 - 查找数组中所有值的最大公约数用
reduce()方法。
- 使用
1 | |
Python NumPy 函数
https://stitch-top.github.io/2021/05/05/python/python06-python-numpy-han-shu/