数据空间
您当前的位置: 首页 /数据知识

四两拨千斤的python小抄,让你快人一步

发布时间:[2018-08-03] 来源:Allen
点击量:

中国企业数据治理联盟www.chinaedg.com/

进入》主数据管理      企业数据治理     信息资源规划     数据安全管理

目前,关于数据科学的基础大全很多,但是能够称得上是精华的却很少。新手在入门数据科学的时候,面对纷繁复杂的基础大全,往往是先收藏下来,兴奋地看了一两页之后,就放弃了。从入门到放弃,有时候就是这么快。而实际上,我们在实际的数据科学操作中并不需要使用那么全面的基础知识,使用频率较高的基础知识其实并不多。对于频率很低的基础,即使你在初学的时候背下来了,那么随着时间的推移,也会逐渐遗忘。

因此,我彻夜奋战之后,将数据科学中使用频率较高的基础知识都总结了下来,这些基础知识浓缩了官方文档的精华部分,也是最实用的部分。有了这些最实用的基础,你就可以付出最小的努力学习到最必要的知识。快速入门,就是这么简单!

除此之外,我还根据这份基础知识,整理一份复习提纲,所有的关键内容都改成了填空题,方便大家复习相关的知识点,如下图所示。

3.jpg

那么,最实用的内容涵盖哪些板块呢?我们来看看泰坦尼克号生还者预测项目的ipynb文件,可以看出,数据分析和数据挖掘的基础无非就是以下三大板块:numpypandasmatplotlib。为了避免文章篇幅过长,小编决定将本次汇总分为上篇和下篇,此为上篇,下篇将随后放出。

4.jpg

本文主要讲的是Numpy基础,正文大纲如下:

Numpy实用基础篇

 基础知识

 数据类型

 创建数组

 算术运算

 索引和切片

Numpy实用基础篇

numpy的主要对象就是其N维数组对象(即ndarray,其中的所有元素必须是相同类型的。在Numpy中,维度(dimensions)称为轴(axes)。NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2.(为了方便读者理解,本文中的“秩”统一写成“维数”。)

举个例子,数组[1,2,1]就是一个一维数组。在这个维度上,它的长度的为3。而下图中的这个数组就是一个二维数组,它的第一个维度(axis=0)的长度为2,第二个维度(axis=1)的长度为3.

5.jpg

ndarray对象以下属性需要重点掌握:

1.ndarray.shape : 显示数组的维度,以及每个维度上面的数组大小。比如,下图的数组的shape为(2,3),shape的长度为2,也就是有两个维度。

6.jpg

2.ndarray.size:显示数组里面的元素数量,等于ndarray.shape中各个元素的乘积。    

7.jpg

3.ndarray.dtype:显示数组中元素的数据类型。    

8.jpg

数据类型

你不需要记住Numpy的所有数据类型,一般只需要知道大致的类型主要有浮点数(如:float16float64)、复数(:complex64)、整数(:int64)、布尔值(:bool)、字符串(string),以及普通的python对象(object)

: float64代表每个元素的存储位数为64位,也就是8个字节(64/8=8 

创建数组

1.numpy.array()。括号里面的参数填的一般是列表(list)或元组(tuple)。

9.jpg

2.numpy.array()将序列的序列转化为二维数组,将序列的序列的序列转化为三维数组,以此类推。

10.jpg

通常,我们一开始对于所要创建的数组中的元素还不确定,但我们可以确定这个数组的形状大小。因此,Numpy提供了以下的内置函数让你可以创建一个带占位符的数组。

3.numpy.zeros():创建一个指定形状的由数字0填充的数组

11.jpg

4.numpy.ones():创建一个指定形状的由数字1填充的数组    

12.jpg

5.numpy.empty():创建一个指定形状的由随机浮点数填充的数组

13.jpg

6.numpy.arange():这个函数类似于range()函数,但返回的是一个数组(array),而不是一个列表(list)。

222.jpg

7.numpy.linspace():如果你知道所要创建数组的元素数值范围以及元素的数量,那么可以使用numpy.linspace()

111.jpg

8.numpy.random.random():创建具有给定形状的 ndarray,其中包含位于半开区间 [0.0, 1.0) 内的随机浮点数。

16.jpg

算术运算

1.大小相等的数组之间的算术运算都会将运算应用到元素级,结果会被保存在一个新的数组里。这里的算术运算包括加、减、乘、平方、对数等等。

17.jpg

2.数组与标量之间的运算则是会将标量值传播到各个元素: 

444.jpg

3.如果要执行矩阵的乘法,可用dot函数。   

555.jpg

4.axis=0axis=1该如何理解

大多数同学在遇到axis=n的时候可能都是一脸懵逼,完全不知道什么意思。下面我翻译了一段StackOverflow上关于axis的经典问答,希望能帮助大家理解。

18.jpg

大致意思如下:根据定义,axis的值是维度在数组shape里面的索引。比如:shape为(2,3)的数组,axis=0代表第一个维度,即长度为2的那个维度,你要在这个维度上进行操作。

比如,如果你要执行 .sum(axis=n) ,那么第n+1个维度就会坍缩然后消失。举个例子,如果bshape为(5,6,7,8),执行c=b.sum(axis=2),其实就是对第三个维度进行求和操作,运算结果就是形状为(5,6,8)的多维数组。

索引和切片

1.普通索引:通过标签索引数组中的元素

19.jpg

2.切片:ndarray[start:end],截取数组中的一部分    

20.jpg

3.注意,如果对 ndarray 进行切片并将结果保存到新的变量中,数据不会复制到新的变量中。例如:

20.jpg

原始数组a的切片没有复制到变量z中,az现在只是同一个ndarray的两个不同名称。切片只是创建了原始数组的一个视图,也就是说,如果对z做出更改,也会更改x中的元素。请看以下示例:

22.jpg

4.numpy.copy():这个函数(也可作方法)可以完美解决前面所述的问题,使用np.copy()可以创建一个新的ndarray,其中包含切片中的值的副本。

23.jpg

5.布尔索引

24.jpg

6.numpy.unique(ndarray):此函数会返回给定 ndarray 中的唯一元素

25.jpg
部分内容参考

https://docs.scipy.org/doc/numpy/user/quickstart.html

https://stackoverflow.com/questions/17079279/how-is-axis-indexed-in-numpys-array

Allen 大数据分析和人工智能 


发表评论 共有条评论
用户名: 密码:
匿名发表