Python For Data Analysis -- NumPy

NumPy作为python科学计算的基础,为何python适合进行数学计算,除了简单易懂,容易学习

Python可以简单的调用大量的用c和fortran编写的legacy的库

Python科学计算的这几个库,单独安装还是蛮麻烦的,所以推荐这个包

http://www.continuum.io/downloads#all

conda list #查看所有的可安装包   
conda install wxpython #安装   
conda install pyqt #安装   
conda update ipython #升级

轻松安装

 

The NumPy ndarray: A Multidimensional Array Object

ndarray,可以理解为n维数组,用于抽象矩阵和向量

Creating ndarrays

最简单的就是,从list初始化,

当然还有其他的方式,比如,

汇总,

 

 

Data Types for ndarrays

首先对于ndarray只能存放同一类型数据,

并且由于封装了c和fortran的库,大家的类型必须要统一,所以ndarrays支持如下类型, 
那么各种语言中的类型,都会统一对应到这些类型

ndarray支持显式的类型转换 (copy)

int转float:

string转float:

 

这个比较有用,并且可以看到这里的类型写的float,NumPy会自动将python的类型转成ndarray支持的类型

 

Operations between Arrays and Scalars

对于ndarray里面的elems的操作,是不需要自己写for的 
默认对于ndarray或shape相同的ndarray之间的操作,都是会遍历每个element的,称为vectorization,向量化

 

 

Basic Indexing and Slicing (View)

取出矩阵中的某些数据,或切分出子矩阵

对于一维向量,和python list操作基本是一致的,最大的区别,是ndarray的slicing不会copy,而是view,即你更改slicing,就相当于更改了原始数据

 

 

可以看到更改arr_slice同样会影响到arr,这样做的原因是,由于经常会操作很大的矩阵,copy会低效,所以默认是不copy的 
当然你可以显式的copy,arr[5:8].copy()

二维的,参考下图,

 

Boolean Indexing

这个比较有特点, 
对于普通的index,arr[2],这里是指定index第二个 
如果我要index多个,并且不连续,怎么办?

其实你可以用一个boolean indexing来一一指定是否需要取出

比如,arr[[True, False, True,False]],注意boolean indexing必须是numpy.array, numpy.matrix也不行,必须getA转成array

对于Numpy中有matrix类的定义,比较坑爹,会混淆

一般不会手工参数这样的boolean indexing,会通过一些条件判断得到

然后你把boolean indexing代入arr就可以取出标为True那维数据

 
所以必须保证boolean indexing的维数和矩阵中的对应的维数是一样的 
比如, 
arr[[True, False, True,False]] 
必须保证arr是4行的

其实每一维都是可以加上条件过滤的,比如,行选names==Bobs,列选第3列

除了在维度级别进行选择,还能对每个elem进行过滤 
比如把data中,所有小于0的,都设为0

 

 

Fancy Indexing

Fancy indexing is a term adopted by NumPy to describe indexing using integer arrays. 
和普通的indexing, arr[3], 不同在于,可以指定多个,并且按照指定的顺序返回

选取第4,3,0,6行

注意底下两种的区别, 
相当于,取(1, 0), (5, 3), (7, 1), and (2, 2)

 
行,选取1,5,7,2 
列,全选,换顺序

 

Transposing Arrays and Swapping Axes

转置,transposing

arr.T

其实转置是swapaxes的特殊版本,这个可以指定swap哪两个维度

arr.swapaxes(0, 1)

 

Universal Functions: Fast Element-wise Array Functions

这个上面在基本ndarray计算的时候已经介绍过,这里汇总一下 
这种vectorized操作分为一元和二元的,

 

Data Processing Using Arrays

Expressing Conditional Logic as Array Operations

vectorized可以用于简化for循环,那么if-else可以简化吗?

numpy.where function is a vectorized version of the ternary expression x if condition else y

np.where(cond, xarr, yarr) 等同于 cond?xarr:yarr

并且,这个还可以嵌套,即如果if…elseif…..elseif……else…

 

Mathematical and Statistical Methods

 

Methods for Boolean Arrays

any和all

 

Unique and Other Set Logic

 

File Input and Output with Arrays

Storing Arrays on Disk in Binary Format (.npy)

压缩存储,并指定别名 (.npz)

Saving and Loading Text Files

 

 

Linear Algebra

 

Random Number Generation

本文章摘自博客园,原文发布日期:2014-08-11

时间: 2024-09-29 09:53:26

Python For Data Analysis -- NumPy的相关文章

Python For Data Analysis -- Pandas

首先pandas的作者就是这本书的作者  对于Numpy,我们处理的对象是矩阵  pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like),和矩阵的区别就是,二维表是有元数据的  用这些元数据作为index更方便,而Numpy只有整形的index,但本质是一样的,所以大部分操作是共通的 大家碰到最多的二维表应用,关系型数据库中的表,有列名和行号,这些就是元数据  当然你可以用抽象的矩阵来对这些二维表做统计,但使用pandas会更

Python For Data Analysis -- IPython

IPython Basics 首先比一般的python shell更方便一些  比如某些数据结构的pretty-printed,比如字典  更方便的,整段代码的copy,执行 并且可以兼容部分system shell , 比如目录浏览,文件操作等   Tab Completion 这个比较方便,可以在下面的case下,提示和补全未输入部分 a. 当前命名空间中的名字 b.对象或模块的属性和函数 c. 文件路径   Introspection, 内省 ?,在标识符前或后加上,显示出对象状况和doc

c++-请问如何将python 中包含了numpy模块的函数导入C++中

问题描述 请问如何将python 中包含了numpy模块的函数导入C++中 现在我要导入一个函数,函数内部包含了numpy模块 和pandas 模块,请问如何将这个函数导入C++中 解决方案 http://www.zhihu.com/question/29521273

天龙八步 第二弹:8步从Python白丁到专家,从基础到深度学习

如果你想做一个数据科学家,或者作为一个数据科学家你想扩展自己的工具和知识库,那么,你来对地方了. 这篇文章的目的,是给刚开始使用Python进行数据分析的人,指明一条全面的Python学习路径.这条路径提供了用Python进行数据分析的必要步骤的一个全面概述.如果你已经有了一些基础,或者不需要所有的内容,可以随意调整学习路径以适合自己,并让我们知道你是怎么改动的. 0热身运动在开始学习之前,第一个需要回答的问题是 推荐这个30分钟的录像,它是DataRobot创始人Jeremy在2014年Pyt

python数据分析时出现RunTimeError

问题描述 python数据分析时出现RunTimeError 我在做<Python fo Data Analysis>第8章地震危机数据处理的时候出现了以下错误信息,希望有大神帮忙分析一下. RuntimeError Traceback (most recent call last) <ipython-input-15-b85854eb74f4> in <module>() 80 cat_data = data[data['category_%s' % code] ==

《Python金融大数据分析》一2.3 延伸阅读

2.3 延伸阅读 下面的网络资源有助于本章介绍的主题. Anaconda文档--http://docs.continuum.io/anaconda/ conda文档--http://conda.pydata.org/docs/ IPython文档--http://ipython.org/ipython-doc/stable/ IPython Notebook使用的Markdown语言--http://daringfireball.net/projects/markdown/有关Spyder的信息

《Python Cookbook(第3版)中文版》——6.3 解析简单的XML文档

6.3 解析简单的XML文档 6.3.1 问题 我们想从一个简单的XML文档中提取出数据. 6.3.2 解决方案 xml.etree.ElementTree模块可用来从简单的XML文档中提取出数据.为了说明,假设想对Planet Python(http://planet.python.org )上的RSS订阅做解析并生成一个总结报告.下面的脚本可以完成这个任务: from urllib.request import urlopen from xml.etree.ElementTree impor

机器学习:入门方法与学习路径 (附资料)

◆ ◆ ◆ 1. 引言 也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸:也自然而然点开今日头条推给你的新闻:也习惯逛淘宝点了找相似之后货比三家:亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈.恩,这些功能的核心算法就是机器学习领域的内容. 套用一下大神们对机器学习的定义,机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身.简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据

机器学习路线图

                                                    机器学习路线图 1. 引言 最近google的阿尔法狗大战李世石刷屏了,闲下来时也了解点机器学习or深度学习的理论 2. 机器学习关注问题 并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题.咱们先来了解了解,机器学习,到底关心和解决什么样的问题. 从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题: 1.分