目录
-
数学函数
1.三角函数
# 三角函数
# 正弦值numpy.sin
a = np.array([0, 30, 45, 60, 90])
print("正弦值:", np.sin(a*np.pi/180))
# 余弦值numpy.cos
print("余弦值:", np.cos(a*np.pi/180))
# 正切值numpy.tan
print("正切值:", np.tan(a*np.pi/180))
正弦值: [0. 0.5 0.70710678 0.8660254 1. ]
余弦值: [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
6.12323400e-17]
正切值: [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
1.63312394e+16]
2.反三角函数
# 反三角函数
# numpy.arcsin
a = np.array([0, 30, 45, 60, 90])
sin = np.sin(a*np.pi/180)
print("正弦值:", sin)
inv = np.arcsin(sin)
print("反正弦(弧度):", inv)
print("转换为角度:", np.degrees(inv))
# numpy.arccos
cos = np.cos(a*np.pi/180)
print("余弦值:", cos)
inv = np.arccos(cos)
print("反余弦(弧度):", inv)
print("转换为角度:", np.degrees(inv))
# numpy.arctan
tan = np.tan(a*np.pi/180)
print("正切值:", tan)
inv = np.arctan(tan)
print("反正切(弧度):", inv)
print("转换为角度:", np.degrees(inv))
正弦值: [0. 0.5 0.70710678 0.8660254 1. ]
反正弦(弧度): [0. 0.52359878 0.78539816 1.04719755 1.57079633]
转换为角度: [ 0. 30. 45. 60. 90.]
余弦值: [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
6.12323400e-17]
反余弦(弧度): [0. 0.52359878 0.78539816 1.04719755 1.57079633]
转换为角度: [ 0. 30. 45. 60. 90.]
正切值: [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
1.63312394e+16]
反正切(弧度): [0. 0.52359878 0.78539816 1.04719755 1.57079633]
转换为角度: [ 0. 30. 45. 60. 90.]
3.舍入函数
# 向下取整numpy.floor
a = np.array([-1.8, 1.6, -0.3, 0.5, 10.0])
print("a:", a)
print("向下取整后的a:", np.floor(a))
# 向上取整numpy.ceil
print("向上取整后的a:", np.ceil(a))
a: [-1.8 1.6 -0.3 0.5 10. ]
向下取整后的a: [-2. 1. -1. 0. 10.]
向上取整后的a: [-1. 2. -0. 1. 10.]
-
数学运算
1.加减乘除
a = np.arange(16, dtype=np.int32).reshape(4, 4)
print("a:", a)
b = np.array([20, 20, 20, 20])
print("b:", b)
# add
c = np.add(a, b)
print("a+b:", c)
# subtract
d = np.subtract(a, b)
print("a-b:", d)
# multiply
e = np.multiply(a, b)
print("a*b:", e)
# divide
f = np.divide(a, b)
print("a/b:", f)
a: [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
b: [20 20 20 20]
a+b: [[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]]
a-b: [[-20 -19 -18 -17]
[-16 -15 -14 -13]
[-12 -11 -10 -9]
[ -8 -7 -6 -5]]
a*b: [[ 0 20 40 60]
[ 80 100 120 140]
[160 180 200 220]
[240 260 280 300]]
a/b: [[0. 0.05 0.1 0.15]
[0.2 0.25 0.3 0.35]
[0.4 0.45 0.5 0.55]
[0.6 0.65 0.7 0.75]]
2.算数运算
a = np.array([0.05, 1.55, 1, 0, 200])
print("a:", a)
# reciprocal
print("调用reciprocal取倒数")
b = np.reciprocal(a)
print("a的倒数:", b)
# power
print("调用power乘方")
a = np.array([2, 3, 4])
print("a:", a)
b = np.power(a, 2)
print("a的2次方:", b)
c = np.array([1, 2, 3])
d = np.power(a, c)
print("a的c次方:", d)
# mod
print("调用mod取余")
a = np.array([10, 20, 30])
print("a:", a)
b = np.array([3, 5, 7])
print("b:", b)
c = np.mod(a, b)
print("a对b取余:", c)
a: [5.00e-02 1.55e+00 1.00e+00 0.00e+00 2.00e+02]
调用reciprocal取倒数
a的倒数: [2.0000000e+01 6.4516129e-01 1.0000000e+00 inf 5.0000000e-03]
调用power乘方
a: [2 3 4]
a的2次方: [ 4 9 16]
a的c次方: [ 2 9 64]
调用mod取余
a: [10 20 30]
b: [3 5 7]
a对b取余: [1 0 2]
3.复数运算
# 复数操作
a = np.array([-7.8j, 0.5j, 11, 5+5j])
print("a:", a)
# real
b = np.real(a)
print("a的实部:", b)
# imag
c = np.imag(a)
print("a的虚部:", c)
# conj
d = np.conj(a)
print("a的共轭:", d)
# angle
e = np.angle(a)
print("a的弧度:", e)
f = np.angle(a, deg=True)
print("a的角度:", f)
a: [-0.-7.8j 0.+0.5j 11.+0.j 5.+5.j ]
a的实部: [-0. 0. 11. 5.]
a的虚部: [-7.8 0.5 0. 5. ]
a的共轭: [-0.+7.8j 0.-0.5j 11.-0.j 5.-5.j ]
a的弧度: [-1.57079633 1.57079633 0. 0.78539816]
a的角度: [-90. 90. 0. 45.]
-
统计函数
1.amin,amax与ptp
a = np.array([[1, 2, 3], [4, 5, 6], [7 ,8 ,9]])
print("a:", a)
# numpy.amin
print("纵向的amin:", np.amin(a, axis=0))
print("横向的amin:", np.amin(a, axis=1))
# numpy.amax
print("纵向的amax:", np.amax(a, axis=0))
print("横向的amax:", np.amax(a, axis=1))
# numpy.ptp返回沿轴方向的最大值减最小值
print("直接调用ptp:", np.ptp(a))
print("纵向的ptp:", np.ptp(a, axis=0))
print("横向的ptp:", np.ptp(a, axis=1))
a: [[1 2 3] [4 5 6] [7 8 9]] 纵向的amin: [1 2 3] 横向的amin: [1 4 7] 纵向的amax: [7 8 9] 横向的amax: [3 6 9] 直接调用ptp: 8 纵向的ptp: [6 6 6] 横向的ptp: [2 2 2]
2.median,mean与average
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("a:", a)
# numpy.median返回中位数
print("直接调用median:", np.median(a))
print("沿着0轴方向:", np.median(a, axis=0))
print("沿着1轴方向:", np.median(a, axis=1))
# numpy.mean返回均值
print("直接调用mean:", np.mean(a))
print("沿着0轴方向:", np.mean(a, axis=0))
print("沿着1轴方向:", np.mean(a, axis=1))
# numpy.average返回加权平均值
b = np.array([1, 2, 3, 4])
print("b:", b)
print("直接调用average:", np.average(b))
wts = np.array([4, 3, 2, 1])
print("带权重的average:", np.average(b, weights=wts))
a: [[1 2 3] [4 5 6] [7 8 9]] 直接调用median: 5.0 沿着0轴方向: [4. 5. 6.] 沿着1轴方向: [2. 5. 8.] 直接调用mean: 5.0 沿着0轴方向: [4. 5. 6.] 沿着1轴方向: [2. 5. 8.] b: [1 2 3 4] 直接调用average: 2.5 带权重的average: 2.0
3.std与var
a = np.array([1, 2, 3, 4])
print("a:", a)
# 标准差std
print("标准差:", np.std(a))
# 方差var
print("方差:", np.var(a))
a: [1 2 3 4] 标准差: 1.118033988749895 方差: 1.25
-
其他函数
1.sort,argmax与argmin
a = np.array([[6, 5], [8, 9]])
print("a:", a)
# sort
print("sort排序:", np.sort(a))
b = np.array([[1, 2, 3], [8, 10, 6], [7, 8, 9]])
print("b:", b)
# argmax
print("最大值的索引:", np.argmax(b))
print("沿着0轴方向的最大值索引:", np.argmax(b, axis=0))
print("沿着1轴方向的最大值索引:", np.argmax(b, axis=1))
# argmin
print("最小值的索引:", np.argmin(b))
print("沿着0轴方向的最小值索引:", np.argmin(b, axis=0))
print("沿着1轴方向的最小值索引:", np.argmin(b, axis=1))
a: [[6 5] [8 9]] sort排序: [[5 6] [8 9]] b: [[ 1 2 3] [ 8 10 6] [ 7 8 9]] 最大值的索引: 4 沿着0轴方向的最大值索引: [1 1 2] 沿着1轴方向的最大值索引: [2 1 2] 最小值的索引: 0 沿着0轴方向的最小值索引: [0 0 0] 沿着1轴方向的最小值索引: [0 2 0]
2.where与extract
x = np.array([[1, 2, 3], [4 ,5 ,6], [7, 8, 9]])
print("x:", x)
# where返回满足条件元素的索引
print("大于5的元素的索引:", np.where(x > 5))
print("用索引取出元素:", x[np.where(x > 5)])
# extract返回满足条件的元素
condition = np.mod(x, 2) == 0
print(condition)
print("获取满足条件的元素:", np.extract(condition, x))
x: [[1 2 3] [4 5 6] [7 8 9]] 大于5的元素的索引: (array([1, 2, 2, 2]), array([2, 0, 1, 2])) 用索引取出元素: [6 7 8 9] [[False True False] [ True False True] [False True False]] 获取满足条件的元素: [2 4 6 8]
-
矩阵库
1.empty,ones与eye
# numpy.matlib.empty
a = np.matlib.empty((3, 3))
print("a:\n", a)
print(type(a))
b = np.empty((3, 3))
print("b:\n", b)
print(type(b))
# numpy.matlib.ones
c = np.matlib.ones((4, 5))
print("全一矩阵c:\n", c)
# numpy.matlib.eye返回对角线元素为1的矩阵
d = np.matlib.eye(4)
print("对角线元素为1的矩阵d:\n", d)
a: [[2.07955588e-312 2.14321575e-312 2.37663529e-312] [2.56761491e-312 2.05833592e-312 1.29441743e-312] [2.33419537e-312 9.76118064e-313 2.05833592e-312]] <class 'numpy.matrixlib.defmatrix.matrix'> b: [[2.07955588e-312 2.14321575e-312 2.37663529e-312] [2.56761491e-312 2.05833592e-312 1.29441743e-312] [2.33419537e-312 9.76118064e-313 2.05833592e-312]] <class 'numpy.ndarray'> 全一矩阵c: [[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]] 对角线元素为1的矩阵d: [[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]
2.zeros,identity与rand
# numpy.matlib.zeros
a = np.matlib.zeros((5, 6))
print("全零矩阵a:\n", a)
# numpy.matlib.identity返回单位矩阵
b = np.matlib.identity(5)
print("单位矩阵b:\n", b)
# numpy.matlib.rand
c = np.matlib.rand((6, 7))
print("随机矩阵c:\n", c)
全零矩阵a: [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] 单位矩阵b: [[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]] 随机矩阵c: [[0.7240846 0.59905456 0.95940325 0.64677579 0.20368691 0.18059935 0.05310961] [0.82639286 0.01598677 0.16897593 0.11804153 0.31463761 0.63031012 0.55418204] [0.62092995 0.23202233 0.27251952 0.56322845 0.92695695 0.27527385 0.18330813] [0.05262046 0.86869258 0.26647956 0.8430722 0.96707523 0.78685782 0.58471241] [0.68988414 0.28359304 0.08684444 0.39163572 0.0857808 0.17206321 0.48439345] [0.01432825 0.96568531 0.79225292 0.84377794 0.7388792 0.38968606 0.3210217 ]]
-
线性代数
1.dot矩阵乘法
# dot矩阵乘法
a = np.array([[3, 4], [5, 6]])
b = np.array([[13, 14], [15, 16]])
print("a:\n", a)
print("b:\n", b)
print("a与b的矩阵乘法:\n", np.dot(a, b))
a: [[3 4] [5 6]] b: [[13 14] [15 16]] a与b的乘法: [[ 99 106] [155 166]]
2.vdot矩阵点积
# numpy.vdot矩阵点积
a = np.array([[3, 4], [5, 6]])
b = np.array([[13, 14], [15, 16]])
print("a:\n", a)
print("b:\n", b)
print("a与b的矩阵点积:\n", np.vdot(a, b))
a: [[3 4] [5 6]] b: [[13 14] [15 16]] a与b的矩阵点积: 266
3.inner矩阵内积
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print("a:\n", a)
print("b:\n", b)
# 矩阵内积inner
print("a与b的矩阵内积:\n", np.inner(a, b))
a: [[1 2] [3 4]] b: [[5 6] [7 8]] a与b的矩阵内积: [[17 23] [39 53]]
4.matmul矩阵积
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print("a:\n", a)
print("b:\n", b)
# 矩阵积matmul
print("a与b的矩阵积:\n", np.matmul(a, b))
a: [[1 2] [3 4]] b: [[5 6] [7 8]] a与b的矩阵积: [[19 22] [43 50]]