用户:Xyy23330121/Python/科学计算/numpy数学函数
本页面用于给出 numpy 中数学函数的列表以及具体使用。
以下列表均省略了 numpy 前缀,比如下面的 sin() 函数,在实际使用时,需要加上前缀,比如:
import numpy as np
x = np.array([1,2,3])
print(np.sin(x))
三角函数
编辑函数 | 说明 |
---|---|
sin(x, /[, out, where, casting, order, ...]) | 正弦 |
cos(x, /[, out, where, casting, order, ...]) | 余弦 |
tan(x, /[, out, where, casting, order, ...]) | 正切 |
arcsin(x, /[, out, where, casting, order, ...]) | 反正弦,结果取值范围[-pi/2, pi/2] |
asin(x, /[, out, where, casting, order, ...]) | 反正弦,同上 |
arccos(x, /[, out, where, casting, order, ...]) | 反余弦,结果取值范围[0, pi] |
acos(x, /[, out, where, casting, order, ...]) | 反余弦,同上 |
arctan(x, /[, out, where, casting, order, ...]) | 反正切,结果取值范围[-pi/2, pi/2] |
atan(x, /[, out, where, casting, order, ...]) | 反正切,同上 |
hypot(x1, x2, /[, out, where, casting, ...]) | 给定直角边边长,求斜边长 等同于sqrt(x1**2+x2**2) |
arctan2(x1, x2, /[, out, where, casting, ...]) | 求向量(x2,x1)的倾斜角,结果取值范围[-pi, pi] |
atan2(x1, x2, /[, out, where, casting, ...]) | 求倾斜角,同上 |
degrees(x, /[, out, where, casting, order, ...]) | 将弧度数转换成对应的角度数 |
rad2deg(x, /[, out, where, casting, order, ...]) | 将弧度数转换成对应的角度数,同上 |
radians(x, /[, out, where, casting, order, ...]) | 将角度数转换成对应的弧度数 |
deg2rad(x, /[, out, where, casting, order, ...]) | 将角度数转换成对应的弧度数,同上 |
unwrap(p[, discont, axis, period]) | 平缓周期性函数自变量的数值 |
列表列举了 numpy 的三角函数。
unwrap(p, discont=None, axis=-1, *, period=6.283185307179586])
编辑对 p 中的元素进行运算,返回元素加减几个周期后的结果。
具体来讲,当 p 中后一项和前一项的差的绝对值大于 max(discont, period/2) 时,就会转换后一项。将后一项转换为在距离前一项 max(discont, period/2) 范围内的数字。
通用可选参数
编辑本章介绍大多数 numpy 中三角函数具有的可选参数。这些参数除 out 以外,都必须使用关键词方式传入。
out
编辑该参数默认为 None,该参数可以输入一个数组。
- 如果该参数为 None,函数的返回值会存储在新创建的数组里面,并返回新创建的数组。
- 如果该参数输入了数组,则要求数组的形状与返回值的形状相同,计算的结果会存储在输入的数组中。
x = np.array([1,4],dtype=float)
y = np.array([0,0],dtype=float)
print(np.sqrt(x, out=y)) #输出:[1. 2.]
print(x) #输出:[1. 4.]
print(y) #输出:[1. 2.],np.sqrt 函数将运算结果存储在了 y 中
where
编辑该参数默认为 True,该参数可以输入一个存储了布尔值的数组。
- 如果该参数输入了数组,则要求数组的形状与返回值的形状相同。在计算时,仅对 where 中对应位置为 True 的进行计算,并输出计算结果。而对应位置为 False 的元素会不经计算直接输出。
- 如果该参数为 True,则所有元素都会被用于计算,并输出。
x = np.array([1, 4, 9],dtype=float)
y = np.array([True, False, True])
print(np.sqrt(x, where=y)) #输出:[1. 4. 3.]
#只有对应位置为 True 的 1 和 9 参与了平方根运算,而对应位置为 False 的 4 被直接输出了。
casting
编辑该参数默认为 "same_kind"
。
该参数决定是否在计算时、自动转换数组中元素的类型。以下是所有选项:
"no"
不进行自动转换。"equiv"
只翻转比特顺序。"safe"
只对数字进行转换。比如 int 转换为 float 或 complex,以及 float 转换为 complex。"same_kind"
只可以将类型转换为不同精度的同种类型。比如 int64 转换为 int32。"unsafe"
只要可能进行转换,就会进行转换。比如把 int32 转换为 str 或者把 int64 转换为 int32。转换过程中可能报错。
读者可以通过 can_cast(from_, to, casting) 来确认两个类型在对应规则下是否可以转换。
dtype
编辑决定输出时使用的数字类型。
subok
编辑默认为 True。
- 若此项为 True,如果输入为数组的子类型(比如 np.matrix 等),则输出也为对应的子类型。
- 若此项为 False,则无论输入是什么,输出总是数组。
order
编辑默认为 "K"。
数组元素求和
编辑对数组 a 中,参数 axis 所给出的维度进行求和。
- 当 axis=None(默认),会对所有维度进行求和,并返回一个数字。
- 当 axis 为整数,则会对第 axis 个维度进行求和,并按情况返回数字或数组。
- 当 axis 为整数组成的元组,则会对元组中每个维度进行求和,并按情况返回数字或数组。
该函数的结果等同于 a.sum(axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)。
x = np.array([[1,2],[3,4]])
print(x.sum()) #输出:10
print(x.sum(axis = 0)) #输出:[4 6]
print(x.sum(axis = 1)) #输出:[3 7]
print(x.sum(axis = (0, 1))) #输出:10