首页 > 代码库 > numpy、scipy、pandas
numpy、scipy、pandas
以下分别是numpy、Scipy、pandas的简介。虽然这些包提供的一些结构比python自身的“更高级、更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认识,最好是辩证的看问题,既要看到区别,又要看到联系,这样才能理解深刻、真正的运用自如。比如python提供list这种数据结构,可以用来当作数组使用;比如我们定义一个list。a=range(10),但是要是对每个元素同时操作比如平方操作,这时候可能需要写个循环,就没有np.arange(10)**2方便。同时,以下的简介和case中也会从对比和联系的角度出发,一块学习这些概念或是实体。
What is numpy?
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。即提供常用的数值数组、矩阵等函数。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
优点是:是基于向量化的运算,进行数值运算时Numpy数组比list效率高
以上部分主要参考《利用numpy做科学计算》一书(点击书名查看详细介绍)
What is Scipy?
numpy 准确地说提供了一个在python中做科学计算的基础库,侠义地讲它重在数值计算,甚至可以说是用于多维数组处理的库;而 scipy 则是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库,主要包含一下模块:
- statistics
- optimization
- numerical integration
- linear algebra
- Fourier transforms
- signal processing
- image processing
- ODE solvers
- special functions
What is pandas?
是一种构建于Numpy的高级数据结构和精巧工具,快速简单的处理数据。
- 支持自动或明确的数据对齐的带有标签轴的数据结构。
- 整合的时间序列功能。
- 以相同的数据结构来处理时间序列和非时间序列。
- 支持传递元数据(坐标轴标签)的算术运算和缩减。
比如,要是没有pandas,对某行元素的操作或是说转置可能需要很多循环。
- 灵活处理丢失数据。
- 在常用的基于数据的数据库(例如基于SQL)中的合并和其它关系操作。
- 提供数据结构:Series和DataFrame
numpy、scipy、pandas