NumPy算术运算

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

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

下面看一组示例:

import numpy as np

a = np.arange(9, dtype = np.float_).reshape(3,3)

#数组a

print(a)

#数组b

b = np.array([10,10,10])

print(b)

#数组加法运算

print(np.add(a,b))

#数组减法运算

print(np.subtract(a,b))

#数组乘法运算

print(np.multiply(a,b))

#数组除法运算

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) 溢出提示,示例如下:

import numpy as np

#注意此处有0

a = np.array([0.25, 1.33, 1, 0, 100])

#数组a默认为浮点类型数据

print(a)

#对数组a使用求倒数操作

print (np.reciprocal(a))

#b数组的数据类型为整形int

b = np.array([100], dtype = int)

print(b)

#对数组b使用求倒数操作

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 相对应的元素作幂 ,以数组形式返回两者的计算结果。示例如下:

import numpy as np

a = np.array([10,100,1000])

#a数组

print ('我们的数组是;')

#调用 power 函数

print (np.power(a,2))

b数组

b = np.array([1,2,3])

print (b)

调用 power 函数

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() 的作用相同 。

import numpy as np

a = np.array([11,22,33])

b = np.array([3,5,7])

#a与b相应位置的元素做除法

print( np.mod(a,b))

#remainder方法一样

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,则返回的值会以角度制来表示,否则以以弧度制来表示。


示例如下所示:

import numpy as np

a = np.array([-5.6j, 0.2j, 11. , 1+1j])

print(a)

#real()

print np.real(a)

#imag()

print np.imag(a)

#conj()

print np.conj(a)

#angle()

print np.angle(a)

#angle() 带参数deg

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.]