17.NumPy算术运算

NumPy 数组的“加减乘除”算术运算,分别对应 add()、subtract()、multiple() 以及 divide() 函数。

注意:做算术运算时,输入数组必须具有相同的形状,或者符合数组的广播规则,才可以执行运算。

下面看一组示例:

  1. import numpy as np
  2. a = np.arange(9, dtype = np.float_).reshape(3,3)
  3. #数组a
  4. print(a)
  5. #数组b
  6. b = np.array([10,10,10])
  7. print(b)
  8. #数组加法运算
  9. print(np.add(a,b))
  10. #数组减法运算
  11. print(np.subtract(a,b))
  12. #数组乘法运算
  13. print(np.multiply(a,b))
  14. #数组除法运算
  15. print(np.divide(a,b))

输出结果:

a数组:
[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]]
b数组:
[10 10 10]
加:
[[ 10. 11. 12.]
[ 13. 14. 15.]
[ 16. 17. 18.]]
减:
[[-10. -9. -8.]
[ -7. -6. -5.]
[ -4. -3. -2.]]

乘:
[[ 0. 10. 20.]
[ 30. 40. 50.]
[ 60. 70. 80.]]
除:
[[ 0. 0.1 0.2]
[ 0.3 0.4 0.5]
[ 0.6 0.7 0.8]]

下面介绍了 NumPy  中其他重要的算术运算函数。

numpy.reciprocal()

该函数对数组中的每个元素取倒数,并以数组的形式将它们返回。

当数组元素的数据类型为整型(int)时,对于绝对值小于 1 的元素,返回值为 0,而当数组中包含 0 元素时,返回值将出现 overflow(inf) 溢出提示,示例如下:

  1. import numpy as np
  2. #注意此处有0
  3. a = np.array([0.25, 1.33, 1, 0, 100])
  4. #数组a默认为浮点类型数据
  5. print(a)
  6. #对数组a使用求倒数操作
  7. print (np.reciprocal(a))
  8. #b数组的数据类型为整形int
  9. b = np.array([100], dtype = int)
  10. print(b)
  11. #对数组b使用求倒数操作
  12. print( np.reciprocal(b) )

输出结果:

a数组:
[   0.25    1.33    1.      0.    100.  ]

对a数组求倒数有inf提示:
__main__:1: RuntimeWarning: divide by zero encountered in reciprocal
[ 4.         0.7518797  1.               inf  0.01     ]

b数组:
[100]

对b数组求倒数:
[0]

numpy.power()

该函数将 a 数组中的元素作为底数,把 b 数组中与 a 相对应的元素作幂 ,最后以数组形式返回两者的计算结果。示例如下:

  1. import numpy as np
  2. a = np.array([10,100,1000])
  3. #a数组
  4. print ('我们的数组是;')
  5. #调用 power 函数
  6. print (np.power(a,2))
  7.  
  8. b数组
  9. b = np.array([1,2,3])
  10. print (b)
  11. 调用 power 函数
  12. print (np.power(a,b))

输出结果:

a数组是:
[  10  100 1000]

调用 power 函数:
[    100   10000 1000000]

b数组:
[1 2 3]

调用 power 函数:
[        10      10000 1000000000]

numpy.mod()

返回两个数组相对应位置上元素相除后的余数,它与 numpy.remainder() 的作用相同 。

  1. import numpy as np
  2. a = np.array([11,22,33])
  3. b = np.array([3,5,7])
  4. #a与b相应位置的元素做除法
  5. print( np.mod(a,b))
  6. #remainder方法一样
  7. print(np.remainder(a,b))

输出结果:

mod:                                          
[1 0 2]
remainder:                            
[1 0 2]

复数数组处理函数

NumPy 提供了诸多处理复数类型数组的函数,主要有以下几个:

  • numpy.real() 返回复数数组的实部;
  • numpy.imag() 返回复数数组的虚部;
  • numpy.conj() 通过更改虚部的符号,从而返回共轭复数;
  • numpy.angle() 返回复数参数的角度,该函数的提供了一个 deg 参数,如果  deg=True,则返回的值会以角度制来表示,否则以以弧度制来表示。


示例如下所示:

  1. import numpy as np
  2. a = np.array([-5.6j, 0.2j, 11. , 1+1j])
  3. print(a)
  4. #real()
  5. print np.real(a)
  6. #imag()
  7. print np.imag(a)
  8. #conj()
  9. print np.conj(a)
  10. #angle()
  11. print np.angle(a)
  12. #angle() 带参数deg
  13. print np.angle(a, deg = True)

输出结果:

a数组:
[ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]

real():
[ 0. 0. 11. 1.]

imag():
[-5.6 0.2 0. 1. ]

conj():
[ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]

angle() :
[-1.57079633 1.57079633 0. 0.78539816]

angle(a,deg=True)
[-90. 90. 0. 45.]
posted @ 2022-08-02 17:18  随遇而安==  阅读(84)  评论(0编辑  收藏  举报