Numpy高级

目录

数学函数

数学运算

统计函数

其他函数

矩阵库

线性代数


  • 数学函数

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]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值