NumPy - 算数运算

用于执行算术运算(如add()subtract()multiply()divide())的输入数组必须具有相同的形状或符合数组广播规则。

示例

  1. import numpy as np
  2. a = np.arange(9, dtype = np.float_).reshape(3,3)
  3. print '第一个数组:'
  4. print a
  5. print '\n'
  6. print '第二个数组:'
  7. b = np.array([10,10,10])
  8. print b
  9. print '\n'
  10. print '两个数组相加:'
  11. print np.add(a,b)
  12. print '\n'
  13. print '两个数组相减:'
  14. print np.subtract(a,b)
  15. print '\n'
  16. print '两个数组相乘:'
  17. print np.multiply(a,b)
  18. print '\n'
  19. print '两个数组相除:'
  20. print np.divide(a,b)

输出如下:

  1. 第一个数组:
  2. [[ 0. 1. 2.]
  3. [ 3. 4. 5.]
  4. [ 6. 7. 8.]]
  5. 第二个数组:
  6. [10 10 10]
  7. 两个数组相加:
  8. [[ 10. 11. 12.]
  9. [ 13. 14. 15.]
  10. [ 16. 17. 18.]]
  11. 两个数组相减:
  12. [[-10. -9. -8.]
  13. [ -7. -6. -5.]
  14. [ -4. -3. -2.]]
  15. 两个数组相乘:
  16. [[ 0. 10. 20.]
  17. [ 30. 40. 50.]
  18. [ 60. 70. 80.]]
  19. 两个数组相除:
  20. [[ 0. 0.1 0.2]
  21. [ 0.3 0.4 0.5]
  22. [ 0.6 0.7 0.8]]

让我们现在来讨论 NumPy 中提供的一些其他重要的算术函数。

numpy.reciprocal()

此函数返回参数逐元素的倒数,。 由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数元素,结果始终为 0, 对于整数 0,则发出溢出警告。

示例

  1. import numpy as np
  2. a = np.array([0.25, 1.33, 1, 0, 100])
  3. print '我们的数组是:'
  4. print a
  5. print '\n'
  6. print '调用 reciprocal 函数:'
  7. print np.reciprocal(a)
  8. print '\n'
  9. b = np.array([100], dtype = int)
  10. print '第二个数组:'
  11. print b
  12. print '\n'
  13. print '调用 reciprocal 函数:'
  14. print np.reciprocal(b)

输出如下:

  1. 我们的数组是:
  2. [ 0.25 1.33 1. 0. 100. ]
  3. 调用 reciprocal 函数:
  4. main.py:9: RuntimeWarning: divide by zero encountered in reciprocal
  5. print np.reciprocal(a)
  6. [ 4. 0.7518797 1. inf 0.01 ]
  7. 第二个数组:
  8. [100]
  9. 调用 reciprocal 函数:
  10. [0]

numpy.power()

此函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

  1. import numpy as np
  2. a = np.array([10,100,1000])
  3. print '我们的数组是;'
  4. print a
  5. print '\n'
  6. print '调用 power 函数:'
  7. print np.power(a,2)
  8. print '\n'
  9. print '第二个数组:'
  10. b = np.array([1,2,3])
  11. print b
  12. print '\n'
  13. print '再次调用 power 函数:'
  14. print np.power(a,b)

输出如下:

  1. 我们的数组是;
  2. [ 10 100 1000]
  3. 调用 power 函数:
  4. [ 100 10000 1000000]
  5. 第二个数组:
  6. [1 2 3]
  7. 再次调用 power 函数:
  8. [ 10 10000 1000000000]

numpy.mod()

此函数返回输入数组中相应元素的除法余数。 函数numpy.remainder()也产生相同的结果。

  1. import numpy as np
  2. a = np.array([10,20,30])
  3. b = np.array([3,5,7])
  4. print '第一个数组:'
  5. print a
  6. print '\n'
  7. print '第二个数组:'
  8. print b
  9. print '\n'
  10. print '调用 mod() 函数:'
  11. print np.mod(a,b)
  12. print '\n'
  13. print '调用 remainder() 函数:'
  14. print np.remainder(a,b)

输出如下:

  1. 第一个数组:
  2. [10 20 30]
  3. 第二个数组:
  4. [3 5 7]
  5. 调用 mod() 函数:
  6. [1 0 2]
  7. 调用 remainder() 函数:
  8. [1 0 2]

以下函数用于对含有复数的数组执行操作。

  • numpy.real() 返回复数类型参数的实部。

  • numpy.imag() 返回复数类型参数的虚部。

  • numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。

  • numpy.angle() 返回复数参数的角度。 函数的参数是degree。 如果为true,返回的角度以角度制来表示,否则为以弧度制来表示。

  1. import numpy as np
  2. a = np.array([-5.6j, 0.2j, 11. , 1+1j])
  3. print '我们的数组是:'
  4. print a
  5. print '\n'
  6. print '调用 real() 函数:'
  7. print np.real(a)
  8. print '\n'
  9. print '调用 imag() 函数:'
  10. print np.imag(a)
  11. print '\n'
  12. print '调用 conj() 函数:'
  13. print np.conj(a)
  14. print '\n'
  15. print '调用 angle() 函数:'
  16. print np.angle(a)
  17. print '\n'
  18. print '再次调用 angle() 函数(以角度制返回):'
  19. print np.angle(a, deg = True)

输出如下:

  1. 我们的数组是:
  2. [ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]
  3. 调用 real() 函数:
  4. [ 0. 0. 11. 1.]
  5. 调用 imag() 函数:
  6. [-5.6 0.2 0. 1. ]
  7. 调用 conj() 函数:
  8. [ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]
  9. 调用 angle() 函数:
  10. [-1.57079633 1.57079633 0. 0.78539816]
  11. 再次调用 angle() 函数(以角度制返回):
  12. [-90. 90. 0. 45.]