numpy数组——数据处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jakob_Hu/article/details/88919591


numpy的数组 处理使用的是简洁的数组表达式,免去了写循环语句的过程.

数组的条件逻辑判断

Python中最简洁的判断式是 三元表达式,形式为 x if condition else y。在numpy数组中。np.where方法是三元表达式的矢量化版本。假设现在有两个数组和一个布尔数组,
在这里插入图片描述
现在要以cond数组中的值选取 xarr和yarr中的值,如果值为True,取xarr的值;反之,取yarr的值。

首先使用的是Python自带的列表表达式,
在这里插入图片描述
需要将三个数组以 zip处理使得同一位置上相同的元素对应,之后在进行判断。这样的做法缺点在于:

1.对较大的数组处理速度很慢,因为是纯Python实现。
2.无法用于多维数组。

而numpy的where方法则解决了上面的问题,而且写法简便,
在这里插入图片描述
第二个和第三个参数不一定是数组,也可以是标量,如果将一个矩阵大于0的数都替换为2,小于0的数都替换为-2,
在这里插入图片描述
在这里插入图片描述
where方法是能够嵌套的,
在这里插入图片描述
上面的多重条件句等同于,
在这里插入图片描述

基本数据统计

在这里插入图片描述
在这里插入图片描述
sum和mean方法
在这里插入图片描述
sum和mean方法是能够接收一个 axis参数的,用于统计该轴上的数据值,得到的结果是第一维度的数组。
在这里插入图片描述
var和std方法

#var方法求方差
a = np.array([[1, 2], [3, 4]])

np.var(a)                #返回 1.25,是整个数组的方差
np.var(a, axis=0)    #返回 array([ 1., 1.]),是编号为0的轴(行)的方差
np.var(a, axis=1)    #返回 array([ 0.25, 0.25]),编号为1的轴的方差

#相同的数组,精度越高得到的值越精确
a = np.zeros((2, 512*512), dtype=np.float32)
np.var(a)                                        #返回 0.20250003
np.var(a, dtype=np.float64)       #返回 0.20249999932944759

#std是标准差的求值函数,用法与var相同

min和max方法,在官方文档中,这两个方法参考的都是 np.amin和np.amax方法,

a = np.arange(4).reshape((2,2))         # 返回 array([[0, 1], 
                                        #            [2, 3]])
                                        
np.amin(a)                      #返回0,整个数组的最小值
np.amin(a, axis=0)        		# 返回 array([0, 1]), 编号为0的轴方向上的最小值
np.amin(a, axis=1)        		# 返回 array([0, 2]),编号为1的轴方向上的最小值

cumsum方法cumpro方法,传入的是轴的编号,所求的结果是降一维度的累加或累乘,如果是一维数组无需指定axis参数,指定axis参数反而会报OutOfBound异常
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jakob_Hu/article/details/88919591