机器学习手稿--NumPy篇
什么是NumPy?
NumPy是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对预算提供大量的数学函数库
2005年开发者在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其他扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发
NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含
- 一个强大的N维数组对象ndarray
- 广播功能函数
- 整合C/C++/Fortran代码的工具
- 线性代数,博立叶变换,随机数生成等功能
- NumPy官网 http://www.numpy.org/
- NumPy源代码:https://github.com/numpy/numpy
还有通用的SciPy和Matplotlib
-
- Matplotlib 官网:https://matplotlib.org
- Matplotlib 源代码:https://github.com/matplotlib/matplotlib
- SciPy 官网:https://www.scipy.org/
- SciPy 源代码:https://github.com/scipy/scipy
NumPy Ndarray对象
NumPy最重要的一个特点就是N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。
ndarray对象适用于存放同类型元素的多维数组
ndarray中的每个元素在内存中都有相同的存储大小的区域
ndarray内部由以下内容组成:
- 一个指向数据(内存或内存映射文件中的一块数据)的指针
- 数据类型或dtype,描述在数组中的固定大小值的格子
- 一个表示数组形状的元组,表示各维度大小的元组
- 一个跨度元组,其中的证书指的是为了前进到当前维度下一个元素需要跨过的字节数
ndarray对象是由计算机内存的连续一维部分组成,并结合索引模式,将每个元素影响到内存块中的一个位置,内存快以行顺序(c样式)或列顺序来保存元素
NumPy数据类型
NumPy支持的数据类型比python内置的类型要多很多,基本上可以和c语言的数据类型对应上,其中部分类型对应为Python内置的类型。
数据类型对象(dtype)
数据类型对象(numpy.dtype)用来描述与数组对应的内存区域是如何使用的,他描述了数据的一下几个方面:
- 数据的类型(整数,浮点数或者Python对象)
- 数据的大小(例如,整数使用多少个字节存储)
- 数据的字节顺序(小端法或大端法)
- 在结构化类型的情况下,字段的名称,每个字段的数据类型和每个字段所取的内存快的部分
- 如果数据类型是子数组,那么它的形状和数据类型是什么
字节顺序是通过对数据类型预先设定<或者>来决定的,<意味着小端法。>意味着大端法
dtype对象是使用以下语法构造的:
numpy.dtype(object,align,copy)
- object-要转换为的数据类型对象
- align如果为true,填充字段使其类似c的结构体
- copy-复制dtype独享,如果为false,则是对内置数据类型对象的引用