这节课我们对array的常用操作进行一个讲解,同样的,有一些前面我们已经学过的知识点我这里也会再讲一次,一来是为了加深记忆,二来是想要让各个操作之间做一个对比加深理解。
首先我们导入numpy并且创建一个array:
import numpy as np
lst=[[1,2,3,4],[7,8,9,5],[11,22,33,44]]
data=np.array(lst)
然后我们再输入:
data.size
结果是:
12→这告知了我们这个array里面有12个元素
再输入:
data.shape
结果是:
(3, 4)→这告诉了我们这个array是3行4列的array
我们再输入一个:
len(data)
结果是:
3 →len在这里其实更多的是返回一个行的结果,这里表示的是有3行
这些小指令在实际的操作过程当中是非常有用的,一定要记住。
接下里我们来看一些统计计算的指令:
np.sum(data)
结果是:
149
这个指令用过excel的人应该都很熟悉了,sum是求和的指令,在这里就是把我们创建的array里面的元素都相加起来,得到这个结果。
那么我现在做一点小变动:
np.sum(data,axis=1)
结果是:
array([ 10, 29, 110])
---------------------------------------------------
np.sum(data,axis=0)
结果是:
array([19, 32, 45, 53])
大家看这两个代码能不能发现什么?
当axis(轴)等于1的时候,求和的结果是行内的元素相加的结果,而当axis(轴)等于0的时候,求和的结果是各列相加的结果。
除了求和我们这里还有统计三连:平均数、标准差、方差:
平均值:
np.mean(data)
结果是:
标准差:
np.std(data)
结果是:
方差:
np.var(data)
结果是:
中位数:
np.median(data)
结果是;
7.5
有些同学可能还不知道是什么标准差什么是方差还有中位数,以及他们的作用,没关系,我会再开一门概率统计的课,会详细讲解的。现在只要记住这些代码就好。
np.sort(data)
结果是:
array([[ 1, 2, 3, 4], [ 5, 7, 8, 9], [11, 22, 33, 44]])
学过前面python基础的都指导sort是排序的指令,这里也一样,我们可以看到用sort指令以后我们array的顺序就有了一定的变化,但是所有的排列变化都是在行内调整的,也就是sort只会对一行内的顺序进行调整。下面我们对这个代码进行一定的改动:
np.sort(data,axis=0)
结果是;
array([[ 1, 2, 3, 4], [ 7, 8, 9, 5], [11, 22, 33, 44]])
可以看到,如果我们将axis(轴)变成0以后,我们sort的顺序排列就会从行内排列变成了列内排序。会根据一列数值的大小进行排列。
现在我们来认真看以下代码:
data
结果是:
array([[ 1, 2, 3, 4], [ 7, 8, 9, 5], [11, 22, 33, 44]])
现在我们来排序一下:
np.sort(data)
结果是:
array([[ 1, 2, 3, 4], [ 5, 7, 8, 9], [11, 22, 33, 44]])
np.argsort(data)
结果是:
array([[0, 1, 2, 3], [3, 0, 1, 2], [0, 1, 2, 3]], dtype=int64)
有没有发现argsort的结果有什么规律?
首先我们可以看到经过sort排列以后第一行和第三行因为原来就是按照数字大小进行排列的,因此都没有什么变动,而第二行,因为5比7小,所以5变成了第一个数字。
现在我们再来看看argsort的结果。第一行和第三行都是按照顺序排列的,只有第二行的数字有点不对劲。我们认真看就会发现,在原始还没有排列的data顺序当中,5正好是在第三个位置(python对于元素位置是从0开始的,第一个数字的顺序是0,第二个是1,以此类推,如果这都不懂说明你前面python基础都没学好)。7在第0个位置,那么argsort里面的数字就不难理解了,3,0,1,2对应的就是5,7,8,9
领取专属 10元无门槛券
私享最新 技术干货