这篇博文主要是来介绍NumPy中的一些通用函数,是在ndarray数据中进行逐元素操作的函数。
这部分的内容比较简单,有一点Python基础的同学就可以很容易的理解并运用。
#导入Numpy
import numpy as np
#生成一元数组
arr = np.arange(10)
arr
#计算每个元素的平方根
np.sqrt(arr)
#计算每个元素的自然指数值
np.exp(arr)
Out:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([0. , 1. , 1.41421356, 1.73205081, 2. ,
2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
2.98095799e+03, 8.10308393e+03])
modf函数是python内建函数divmod的向量化版本,返回一个浮点值数组的小数部分和整数部分。
arr = np.random.randn(7) * 5
arr
remainder,whole_part = np.modf(arr)
remainder
whole_part
Out:
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 7.65543378,
-0.71083518, 1.3395564 ])
array([-0.42433257, 0.77142794, -0.81067959, -0.00623027, 0.65543378,
-0.71083518, 0.3395564 ])
array([-4., 0., -2., -3., 7., -0., 1.])
np.abs(arr)#计算每个元素的绝对值
np.fabs(arr)#计算绝对值
np.square(arr)#计算每个元素的平方
np.exp(arr)#计算每个元素的自然指数值
np.log(arr)#计算每个元素的自然对数
np.sign(arr)#计算每个元素的符号值,1,0,-1分别代表正数,0,负数
np.ceil(arr)#计算每个元素的最高整数值
np.floor(arr)#计算每个元素的最小整数值
Out:
array([4.42433257, 0.77142794, 2.81067959, 3.00623027, 7.65543378,
0.71083518, 1.3395564 ])
array([4.42433257, 0.77142794, 2.81067959, 3.00623027, 7.65543378,
0.71083518, 1.3395564 ])
array([19.57471872, 0.59510107, 7.89991976, 9.03742044, 58.60566636,
0.50528665, 1.79441135])
array([1.19822059e-02, 2.16285248e+00, 6.01640916e-02, 4.94778457e-02,
2.11209110e+03, 4.91233758e-01, 3.81734976e+00])
array([ nan, -0.25951201, nan, nan, 2.03541569,
nan, 0.29233852])
array([-1., 1., -1., -1., 1., -1., 1.])
array([-4., 1., -2., -3., 8., -0., 2.])
array([-5., 0., -3., -4., 7., -1., 1.])
上面结果中有出现nan是因为求x的自然对数时,x需要为正数,而arr中存在负数。
np.rint(arr)#将元素保留到整数位
np.modf(arr)#返回小数和整数部分
np.isnan(arr)#返回布尔值数组,判断元素是否为NaN
np.isfinite(arr)#判断元素是否有限(非inf,非NaN)
np.isinf(arr)#判断元素是否无限
np.cos(arr)
np.arccos(arr)
arr
np.logical_not(arr)#对数组元素按位取反
Out:
array([-4., 1., -3., -3., 8., -1., 1.])
(array([-0.42433257, 0.77142794, -0.81067959, -0.00623027, 0.65543378,
-0.71083518, 0.3395564 ]), array([-4., 0., -2., -3., 7., -0., 1.]))
array([False, False, False, False, False, False, False])
array([ True, True, True, True, True, True, True])
array([False, False, False, False, False, False, False])
array([-0.28408925, 0.7169159 , -0.94574608, -0.99085249, 0.19724592,
0.75781721, 0.22918462])
array([ nan, 0.68971414, nan, nan, nan,
2.36148124, nan])
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 7.65543378,
-0.71083518, 1.3395564 ])
array([False, False, False, False, False, False, False])
二元函数会接收两个数组,对两个数组进行操作,并且返回一个数组作为结果。
np.add(arr,[1])#加
np.subtract(arr,arr)#减
np.divide(arr,[1])#除
np.floor_divide(arr,[2])#整除,放弃余数
np.power(arr,[2])#第二个数组的元素作为幂次方
np.maximum(arr,[100])#逐个元素计算最大值
np.fmax(arr,[100])
np.minimum(arr,[100])#逐个元素计算最小值
np.fmin(arr,[1])
np.mod(arr,[2])#取余数
np.copysign(arr,[23])#将第一个数组的符号值改为第二个数组的符号值
np.greater(arr,np.arange(7))#进行逐个元素的比较,返回布尔值
np.greater_equal(arr,np.arange(7))#>=
np.less(arr,np.arange(7))#<
np.less_equal(arr,np.arange(7))#<=
np.equal(arr,np.arange(7))#=
np.not_equal(arr,np.arange(7))#不等于
Out:
array([-3.42433257, 1.77142794, -1.81067959, -2.00623027, 8.65543378,
0.28916482, 2.3395564 ])
array([0., 0., 0., 0., 0., 0., 0.])
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 7.65543378,
-0.71083518, 1.3395564 ])
array([-3., 0., -2., -2., 3., -1., 0.])
array([19.57471872, 0.59510107, 7.89991976, 9.03742044, 58.60566636,
0.50528665, 1.79441135])
array([100., 100., 100., 100., 100., 100., 100.])
array([100., 100., 100., 100., 100., 100., 100.])
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 7.65543378,
-0.71083518, 1.3395564 ])
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 1. ,
-0.71083518, 1. ])
array([1.57566743, 0.77142794, 1.18932041, 0.99376973, 1.65543378,
1.28916482, 1.3395564 ])
array([4.42433257, 0.77142794, 2.81067959, 3.00623027, 7.65543378,
0.71083518, 1.3395564 ])
array([False, False, False, False, True, False, False])
array([False, False, False, False, True, False, False])
array([ True, True, True, True, False, True, True])
array([ True, True, True, True, False, True, True])
array([False, False, False, False, False, False, False])
array([ True, True, True, True, True, True, True])
#进行逐个元素的逻辑操作,与操作符&,|,^效果一致
arr
np.logical_and(arr,np.random.randint(0,2,size=[1,7]))
np.logical_or(arr,np.zeros(7))
np.logical_xor(arr,np.zeros(7))#按位异或,相同则为0,不同则为1
Out:
array([-4.42433257, 0.77142794, -2.81067959, -3.00623027, 7.65543378,
-0.71083518, 1.3395564 ])
array([[ True, False, True, True, False, True, True]])
array([ True, True, True, True, True, True, True])
array([ True, True, True, True, True, True, True])