python 数据处理基础之 numpy - 基础篇
从今天开始,我们一起来学习python数据处理基础~我们将从一些基本的工具,如numpy, pandas等学起;然后结合这些工具学习概率论、统计学、一般数理统计方法等。
本章我们主要一起学习什么是 numpy
,为什么我们要学习使用numpy
。以及介绍下numpy
中主要的数据结构ndarray
。
1 导图
(建议看每一章时,先把此导图打印出来对着看,好让自己对整体内容有个大概的把握与知道自己学习到哪个位置:)我自己做此笔记也是这样,把导图都打印出来,然后对着自己的笔记回顾,看完哪里就去哪里打个勾表示复习过一遍了)
2 为什么要用 numpy?
numpy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。
这是因为:
- numpy是在一个连续的内存块中存储数据,独立于其他Python内置对象。numpy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,numpy数组使用的内存更少。
- numpy可以在整个数组上执行复杂的计算,而不需要Python的for循环。
总结起来就是两点:1. 速度快;2、操作简单方便
使用numpy库先得导入之,我们常导入并重命名其为 np
:
1 | import numpy as np |
现在我们知道numpy这个科学库是用来处理大数组数据的。我们知道在数学计算中,很多场景需要用到数组计算。最好想的就是线性代数,比如用2维数组表示一个矩阵,然后还要算矩阵的点积等运算。再比如说遍历大数组、对大数组每个元素做平方计算等,numpy都可以高效地完成任务。
那么,他是怎么完成大数组的表示的呢?又是怎么完成大数组的计算?我们下面继续学习之。
3 多维数组 ndarray(N-Dimensions Array)
如我们上一节所说,numpy最牛逼的功能在于高效处理大数组数据。所以,它必须有一个表示大数组的数据结构 – 那就是 ndarray
。我们可以简单地使用 array()
方法创建一个ndarray
,并查看下他的类型
1 | ndarray = np.array([1, 2, 3]) |
3.1 shape与dtype
上面的代码我们很轻松地创建了一个一维数组,但是之所以叫作 ndarray, (N-Dimension Array),多维才是其特色所在。其中,ndarray有两个最重要的属性: shape
& dtype
,我们看下面的示例:
1 | ndarray = np.random.rand(2, 3) # 随机创建一个2*3的二维数组 |
可见主要的两个属性:
- shape - 表示数组的
维度
; - dtype - 表示数组元素的
数据类型
。
3.2 创建ndarray
我们上节已经展示了怎样创建ndarray,其实ndarray有多种创建方法,在本章开头的思维导图中罗列了各种方法,我这里就不全部介绍了,这里主要展示一下关键的一些代码及结果,方便大家直观地学习。
1 | // array方法 |
元素的类型dtype虽说是重要的属性,但是一般用的到情况不多,因为numpy太智能了,会自动地根据你赋的值来确定要使用的数据类型。当然,你也可以使用 astype(type)
方法改变之。
4 思考题
- numpy是用于解决什么问题的?
- numpy的数组处理较之python原生的list有何优点?
- numpy的主要数据结构是什么?
- 如何成生ndarray
- 试写代码生成一个
4*4
的2维数组,把所有元素初始化为0 - 试写代码生成一个由数字1-99组成的(
3*3*11
)的3维数组
5 引用
- 《利用python进行数据分析》 - WesMcKinney著,SeanCheney译 - WesMcKinney是pandas的开发者,所以必须是讲解numpy、pandas等数据处理工具最权威的专家了,他的这本书写的很简洁很易读,SeanCheney翻译的也是非常完美。十分值得推荐的。