精彩文章
文末免费领取500G干货教程
今日分享:ufunc运算及统计函数
Numpy库是一个科学计算库,既包括常见的四则运算布尔运算,也包括强大的函数运算,比如统计函数、各种数值处理函数、线性代数中的一些函数及概率论中的函数。在本文中着重介绍简单函数(类似于python中的函数)和一些常见的统计函数。
一:ufunc(一般函数)运算
四则运算
Numpy提供了很多ufunc函数,比如在python中接触到的加减乘除一类的,下面简单了解一下:
In [2]: a = np.array([1,2,3,4])
In [3]: b = np.array([2,3,4,5])
In [4]: np.add(a,b)
Out[4]: array([3, 5, 7, 9])
以上是计算数组a、b的和,其计算过程就是把相对应位置上的元素进行函数计算,输出结果是一个数组,如果未指定out参数,它将会重新产生一个新数组来保存结果
In [5]: np.add(a,b,a)
Out[5]: array([3, 5, 7, 9])
在这两行代码中,并不是a+b+a的意思,而是将前两个a+b的结果传递给a数组,第二个a就是输出结果参数out,代码中也可以写成 out=a ,通过这样的运算,a数据就不再是原始数组,而是新的一个数组,下面给出其他的四则运算函数:
np.suntract(a,b,[out=a or b])
减法
np.multiply(a,b,[out=a or b])
乘法
np.divide(a,b,[out=a or b])
除法
np.true_divide(a,b,[out=a or b])
除法,并返回精确的值,和上面的效果一样
np.floor_divide(a,b,[out=a or b])
除法,返回整数位数字,注意不进行四舍五入
np.negative(a,b,[out=a or b])
取反运算
np.power(a,b,[out=a or b])
幂运算
np.mod(a,b,[out=a or b])或np.remainder(a,b,[out=a or b])
取余运算
注意:以上中括号中的内容是可选的,并且输出结果参数只能在运算数组中选择某个。
比较运算
比较运算指的是利用 > 、
In [31]: a = np.array([1,2,3])
In [32]: b = np.array([3,2,1])
In [33]: a < b
Out[33]: array([ True, False, False], dtype=bool)
比较运算也是将对应位置的函数按照运算函数进行运算,返回布尔值到数组,下面给出其他的比较运算函数:
np.equal(a,b,[out=a or b])
表示a < b运算
np.not_equal(a,b,[out=a or b])
表示a = b运算
np.less(a,b,[out=a or b])
表示a < b运算
np.less_equal(a,b,[out=a or b])
表示a
np.greater(a,b,[out=a or b])
表示a > b运算
np.greater_equal(a,b,[out=a or b])
表示a >= b运算
比较运算仍可进行out参数设置,具体细节同上。
布尔运算
是指将多个比较运算的结果进行比较,由于比较运算结果是布尔形式的数组,因此成为布尔运算,其结果仍是一个布尔数组,布尔运算无非是not,and,or
这三个,但是需要注意的是,numpy中这些逻辑运算符都是以logical开头的,下面看一个示例:
In [31]: a = np.array([1,2,3])
In [32]: b = np.array([3,2,1])
In [33]: a < b
Out[33]: array([ True, False, False], dtype=bool)
In [34]: a == b
Out[34]: array([False, True, False], dtype=bool)
In [35]: np.logical_and(a
Out[35]: array([False, False, False], dtype=bool)
创建了两个数组,并进行比较运算,再将其进行布尔逻辑运算,得到一个全为Flase的数组,其实就是判断a < b和a == b是否同时存在,显然是不可能的,一个数不可能既小于又等于另外一个数。
二:描述性统计函数
下面介绍一些Numpy中基础的描述性的统计函数,以后在Pandas库中还会用到这些,届时也会拓展一些另外的统计分析函数。
In [45]: a = np.arange(12).reshape(3,4)
In [46]: a
Out[46]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [48]: np.max(a)
Out[48]: 11
按代码操作,提取整个数组的最大值
In [49]: np.max(a,axis=1)
Out[49]: array([ 3, 7, 11])
当设定轴参数axis为1时,是按行寻求最大值,总共三行,所以输出三个行最大值。
In [51]: np.max(a,axis=0)
Out[51]: array([ 8, 9, 10, 11])
当设定轴参数axis为0时,是按列寻求最大值,总共四列,所以输出四个列最大值。
其他的函数如下:
np.min()
求最小值
np.argmax()
求最大值的出现位置
np.maxmin()
求最小值的出现位置
np.sum()
求和
np.std()
求标准差
np.var()
求方差
np.ptp()
求极差
np.sort()
排序
np.median
求中位数
np.mean()
求平均数
np.average()
求平均数
这些描述性统计函数的具体操作方法与代码示例操作类似,可进行参数axis设置、参数out设置、dtype数据类型设置,大家可仿照练习。
干货免费分享
关注公众号即可一键领取
省去找资料的麻烦
为您的学习保驾护航
您的点赞与转发是我们前进的最大动力!
扫二维码进交流学习群
领取专属 10元无门槛券
私享最新 技术干货