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初始化,

image

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

image

image

汇总,

image

image 

 

Data Types for ndarrays

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

image

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

image

image

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

int转float:

image

string转float:

image 

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

 

Operations between Arrays and Scalars

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

image image

 

Basic Indexing and Slicing (View)

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

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

image 

image 
image

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

二维的,参考下图,

image

 

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,会通过一些条件判断得到

image

image

image

image

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

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

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

image

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

image 

 

Fancy Indexing

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

image

选取第4,3,0,6行

image

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

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

image

 

Transposing Arrays and Swapping Axes

转置,transposing

arr.T

image

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

arr.swapaxes(0, 1)

 

Universal Functions: Fast Element-wise Array Functions

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

image

image

image

 

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

image

image

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

image

 

Mathematical and Statistical Methods

image

 

Methods for Boolean Arrays

image

any和all

image

 

Unique and Other Set Logic

image

 

File Input and Output with Arrays

Storing Arrays on Disk in Binary Format (.npy)

image

image

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

image

image

Saving and Loading Text Files

image

image

 

 

Linear Algebra

image

 

Random Number Generation

image


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

目录
相关文章
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
348 0
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
188 0
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
417 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
4月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
405 0
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
294 2
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
709 5
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
323 3
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
436 2
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
425 10
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
221 5