NumPy库提供了许多的ufunc函数,这里我们介绍一些用于运算的函数。
一、四则运算
两个数组相加:
np.add(a, b)
两个数组相减:
np.subtract(a, b)
两个数组相乘:
np.multiply(a, b)
两个数组相除:
np.divide(a, b)
这里我们用一段代码来展示以上四则运算:
import numpy as np
a = np.arange(9, dtype = np.float_).reshape(3,3)
print ('第一个数组:')
print (a)
print ('\n')
print ('第二个数组:')
b = np.array([10,10,10])
print (b)
print ('\n')
print ('两个数组相加:')
print (np.add(a,b))
print ('\n')
print ('两个数组相减:')
print (np.subtract(a,b))
print ('\n')
print ('两个数组相乘:')
print (np.multiply(a,b))
print ('\n')
print ('两个数组相除:')
print (np.divide(a,b))
运行结果:
第一个数组:
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
第二个数组:
[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]]
二、倒数运算
np.reciprocal(a)对于数组里边每一个元素依次取倒数。
import numpy as np
a = np.array([0.25, 1.33, 1, 100])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 reciprocal 函数:')
print (np.reciprocal(a))
运行结果:
我们的数组是:
[ 0.25 1.33 1. 100. ]
调用 reciprocal 函数:
[4. 0.7518797 1. 0.01 ]
三、求幂运算
np.power(a, n):a代表的是数组,n代表的是幂数。
import numpy as np
a = np.array([10,100,1000])
print ('我们的数组是;')
print (a)
print ('\n')
print ('调用 power 函数:')
print (np.power(a,2))
print ('\n')
print ('第二个数组:')
b = np.array([1,2,3])
print (b)
print ('\n')
print ('再次调用 power 函数:')
print (np.power(a,b))
运行结果:
我们的数组是;
[ 10 100 1000]
调用 power 函数:
[ 100 10000 1000000]
第二个数组:
[1 2 3]
再次调用 power 函数:
[ 10 10000 1000000000]
我们来简单解释一下这两次调用power函数的具体运算逻辑:第一次调用power函数np.power(a, 2)的意思就是将数组a的所有元素平方处理;第二次调用power函数的意思就是将数组a里的三个元素依次对应数组b里的元素依次进行幂运算。
四、求余运算
np.mod()计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。
import numpy as np
a = np.array([10,20,30])
b = np.array([3,5,7])
print ('第一个数组:')
print (a)
print ('\n')
print ('第二个数组:')
print (b)
print ('\n')
print ('调用 mod() 函数:')
print (np.mod(a,b))
print ('\n')
print ('调用 remainder() 函数:')
print (np.remainder(a,b))
运行结果:
第一个数组:
[10 20 30]
第二个数组:
[3 5 7]
调用 mod() 函数:
[1 0 2]
调用 remainder() 函数:
[1 0 2]
我们可以看到mod运算就是两个数组对应元素相除取余数,remainder也起到了同样的作用。
五、对数运算
np.logn()用这个函数进行取对数运算,n为底数(n不写默认以自然对数e为底)
运行代码:
import numpy as np
# 创建一个NumPy数组
arr = np.array([1, 10, 100, 1000, 10000])
# 计算以10为底的对数
log_base_10 = np.log10(arr)
print(log_base_10)
运行结果;
[0, 1 ,2 ,3 ,4]
六、(反)三角函数运算
NumPy 提供了标准的三角函数:sin()、cos()、tan()。
我们需要注意的是,括号里需要写下的是弧度制,如果是角度则需要乘pi/180进行弧度制转化。
import numpy as np
a = np.array([0,30,45,60,90])
print ('不同角度的正弦值:')
# 通过乘 pi/180 转化为弧度
print (np.sin(a*np.pi/180))
print ('\n')
print ('数组中角度的余弦值:')
print (np.cos(a*np.pi/180))
print ('\n')
print ('数组中角度的正切值:')
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]
ps:
arcsin,arccos,和 arctan 函数返回给定角度的 sin,cos 和 tan 的反三角函数。
这些函数的结果可以通过 numpy.degrees() 函数将弧度转换为角度。
这里我们不作过多展示,单位仍然为弧度制~
七、四舍五入运算
numpy.around(a, decimals) 函数返回指定数字的四舍五入值。
参数说明:
- a: 数组
- decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
运行代码:
import numpy as np
a = np.array([1.0,5.55, 123, 0.567, 25.532])
print ('原数组:')
print (a)
print ('\n')
print ('舍入后:')
print (np.around(a))
print (np.around(a, decimals = 1))
print (np.around(a, decimals = -1))
运行代码:
原数组:
[ 1. 5.55 123. 0.567 25.532]
舍入后:
[ 1. 6. 123. 1. 26.]
[ 1. 5.6 123. 0.6 25.5]
[ 0. 10. 120. 0. 30.]
八、向上取整运算
numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。
运行代码:
import numpy as np
a = np.array([-1.7, 1.5, -0.2, 0.6, 10])
print ('提供的数组:')
print (a)
print ('\n')
print ('修改后的数组:')
print (np.ceil(a))
运行结果:
提供的数组:
[-1.7 1.5 -0.2 0.6 10. ]
修改后的数组:
[-1. 2. -0. 1. 10.]
九、向下取整运算
numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。
运行代码:
import numpy as np
a = np.array([-1.7, 1.5, -0.2, 0.6, 10])
print ('提供的数组:')
print (a)
print ('\n')
print ('修改后的数组:')
print (np.floor(a))
运行结果:
提供的数组:
[-1.7 1.5 -0.2 0.6 10. ]
修改后的数组:
[-2. 1. -1. 0. 10.]
算术函数的总结就到这里啦!~
如果您觉得有用,点赞关注不迷路哦~~~
个人主页正在陆续更新python相关知识。
参考资料: