首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

五、numpy的使用

这节课我们对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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180804G0Z94S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券