以下分别是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

  

  

  

05-28 20:46