当前位置:文档之家› 第二讲PYTHON 数据类型结构

第二讲PYTHON 数据类型结构


内存的分配问题



在我们初始化NumPy数组的时候,提供了一个 order参数,这个参数指定了在内存中存储数据的 方式。当处理比较小的数组的时候,这个选项可 能不会给程序运行的效率带来多大的影响,但是 当处理的是较大的数组,故事就不同了,依赖于 数组上所能进行的操作。 举例:构造多维的numpy.ndarray数组对象。 当对数组元素进行求和的时候,在两种内存分配 方案之间不存在什么效率的差别。但是,我们会 看到加总五个向量得到一个单一的大向量要比加 总10000000个小向量要慢。这是因为小向量中的 单一元素,行,是依次存放的,当使用Fortran类 型的存储的时候,相对的效率会发生较大的变化 。这个时候较少大向量的加总会比较快。
整型



整型是最基本的一种数据类型,记为int。 Python的内建函数type可以返回所有对象的类型信息,包括标 准的、内建的类型以及用户自定义的类和对象。如果需要表 示类型的对象是用户定义的,那么这个函数所返回的信息会 依赖于程序员在类中所存储的信息。 Python中的任何东西都是对象,即使是Int这种简单的类型也 具有其内建方法。例如,调用方法bit_length可以返回表达int 对象所需要的字位数量。你会发现随着我们赋值给这个对象 的整数值的增加,其表达所需要的字位数也会增加。 一般来说,内建方法是非常多的,但是高级的Python编程环 境,比如Ipython提供了自动完成功能来显示某个对象所分配 的全部方法。在对象后面键入一个.,然后使用tab键可以得到 这些内建函数的列表。另外,Python还提供了dir内建函数来 显示某个对象的全部属性与方法的列表。
◦ shape:可以是int,一组整数或者是对另一个numpy.ndarray的引用 。 ◦ dtype:(可选参数),是针对numpy.ndarray的Numpy具体数据类 型。 ◦ order:(可选参数),指明元素在内存中的存储顺序(C是C语言 形式,行为标准,F是列为标准,Fortran语言形式)。





tuple是一种高级数据类型,但是是最简单的,应用 也有限,其定义是通过在小括号中提供对象。 也可以不用括号,而是用逗号分隔 与Python中的几乎所有其他数据结构相同,tuple有 内建的索引,这可以很容易的来获得一个或多个 tuple中的元素。重要的是记住Python使用的是零为 基础的计数,例如,tuple中的第三个元素标记为2。 对于这种对象类型Python只提供了count和index两种 具体方法,count返回某个对象出现的次数,index方 法返回第一次出现的位置。 tuple类型并不灵活,因为一旦定义,它就不能够轻 易改变。
常规的NumPy数组


由上面可以看出,使用list来处理数组还不是那么的方便, 需要一些专业的处理数组的类。这样特殊的类中的一个是 numpy.ndarray,这就是为了方便和有效的处理n维数组来 设计的。 Numpy.ndarray提供了多个内建的方法,另外也可以处理向 量化的数学操作。 与使用list为基础处理数组不同,numpy.ndarray类明确的知 道坐标轴,从矩阵中选择行或者列的方法具有一致性。 可以首先创建一个numpy.ndarray对象,然后再给它赋值。 这里需要提供的参数如下:

如果你拥有其他编程语言的知识,可以在本章对其语法与 Python语法的异同多加注意。本章所介绍的内容都是非常 重要的,构成后续章节的基础。
基本数据类型


Python是一种动态类型语言,意味着Python解 释器可以在程序的运行时决定对象的类型。 与之相对应的,例如C语言等编程语言是编译 型的,它们的数据类型是静态的,在编译之 前对象的类型就是被规定好的。 本章介绍整型、浮点型、字符串三种基本数 据类型。
代码的向量化




NumPy提供了大量的向量化操作工具,例如:将两个数组 元素一对一相加。 NumPy支持broadcasting,允许我们将不同形状的数据在一 次操作中综合起来,例如,当把一个标量加到一个向量的 时候,标量就是被broadcasting的,然后与向量的每一个元 素加起来。注意常常要与transpose函数配合使用。 作为一个一般的规则,用户定义的Python函数都可以用在 numpy.ndarrays上,用法和基本数据类型是一致的。这样 可以避免纯Python代码的循环,而是将循环代理给 numpy.ndarray以一种更高效的方式进行。这就是为什么使 用Numpy的数组会提升效率的原因。 注意标准Python的一些函数(例如sin)不能用于NumPy数 组,而要使用NumPy提供的ufuncs,或者universal functions 。
整型
浮点型
字符串


Python中最基本的表示文本的类型是string类型, string对象有一系列有用的内建方法。事实上, Python通常被认为是处理任意大小的文本文件的 好的工具。string对象的定义通常是使用单引号或 双引号,或者通过str函数将另外一个对象转换成 string对象(即使用对象的标准或者用户定义的 string表达式)。 内建方法
控制结构




虽然这本身可以独立作为一个讨论话题,例 如循环等的控制结构最好是基于list对象来进 行介绍。这是因为循环常常是针对list对象来 进行的,这与其他语言的标准有一定的不同 。在编写语句的时候应当特别注意缩进。 基于计数的期权在Python中也是可以使用的 ,但是应当基于一个list对象,称为range。 Python同样提供了条件控制语句if, elif和else ,while语句也可以用来控制流程。 Python的一个特色是称为list comprehension的 机制,用起来更加紧凑。
使用Python的list来处理数组




在学习NumPy的处理之前,我们首先使用 Python提供的内建数据结构来构建array,list对 象特别适合于完成此项工作。事实上,一个简 单的list已经可以被考虑为一维数组。 因为list对象可以包含任意其他类型的对象, 当然它也就可以包含其他的list对象,这样,2 维到高维的数组就方便创建了。 可以通过简单下标选择行,通过双重下标选择 元素,但是单列元素是比较难选择的。 可以通过嵌套来获得更复杂的结构。这样对于 原始的对象提供了引用指针。Deepcopy函数
北风网项目实战培训
大数据时代的Python金融应用
数据类型与数据结构
讲师:朱彤(北风网版权所有)
概述


本章我们介绍Python中的基本数据类型和数据结构,虽然 python解释器本身提供了丰富的数据结构,NumPy和其他 库也提供了类似的实用功能。 本章包括如下内容:
◦ 基本数据类型(第一节介绍基本数据类型,例如int, float和string 等)。 ◦ 基本数据结构(第二节介绍Python中的基本数据结构,比如list对 象,并且讲解控制结构,函数编程框架以及匿名函数)。 ◦ NumPy数据结构(介绍NumPy的ndarray的特征与功能以及这个类 对于科学和财务应用的作用)。 ◦ 代码的向量化(最后一节描述在NumPy中可以很方便的通过其数 组类实现向量化的代码,使其更为紧凑)。
常规的NumPy数组
结构数组


NumPy提供了结构数组允许每列中包含不同 的NumPy数据类型。结构数组的构造非常类 似于SQL数据库,每一列都包含列名和列的 数据类型,然后根据这个类型来赋值数据。 使用下标来访问数据。 结构数组的一个好处是每一列的单一元素可 以是另外一个多维的对象而并不需要遵守基 本的NumPy数据类型。
函数编程




Python提供了一系列支持函数编程的工具,即我 们可以运用这些工具将函数应用到一系列的输入 中。这些工具包括filter,map和reduce。首先, 我们需要定义函数,当然函数可以任意复杂,有 多个输入对象甚至有多个返回对象。 使用map可以将函数应用到整个list对象,在使用 中,可以直接给map函数提供函数的定义,使用 lambda或者匿名函数。 如果函数的返回值类型是布尔类型,可以应用它 来filter一个list。 使用reduce可以将函数应用于list对象中的每一个 元素,返回一个单一的值,举例:对list对象中的 所有元素做累加。
L,list类型则更为灵活和强大。从 金融的角度,利用list对象可以做很多事情,例如 存放股票价格以及追加新数据。list对象可以通过 一对中括号中放入对象进行,基本的功能和行为都 类似于tuple对象。 也可以使用函数list来定义和转换list对象,例如将 tuple转换为list。 除了tuple对象的性质以外,list对象是可以扩展和 减少的。也就是说建立以后list对象是可以改变的 ,这与tuple以及string是对应的。也可以将某一个 list对象追加到另一个list对象上。 对list对象做切片,也就是将某个list数据集切割为 子集。
基本数据结构
• 一般来说,数据结构指的是包含可能较大数量 其他对象的对象。Python提供的内建数据结构包 括
• • • • tuple(任意对象的集合,仅仅提供少量方法) list(任意对象的集合,提供多种方法) dict(key-value存储的对象) set(唯一对象的无序集合对象)
tuple
Sets



虽然集合理论在数学和金融理论中很常用,但是 set对象的实际应用场合并不多。这类对象是其他 对象的无序集合,但是每个对象仅能包含一次。 使用set对象,可以实现数学集合理论中的各项操 作,例如,可以生成交集、并集和差集等。 set对象的一个应用是去掉list对象中的重复元素。
NumPy数据结构
◦ ◦ ◦ ◦ ◦ capitalize() split() find() replace() strip()
相关主题