这系列用来介绍Python的标准库的支持Numpy部分。资料来自http://wiki.scipy.org/Tentative_NumPy_Tutorial,页面有许多链接,这里是直接翻译,所以会无法链接。可以大致看完该博文,再去看英文版。
1、先决条件
想要运行numpy,首先最小安装的有:Python、NumPy。:a、ipython 是一个增强的交互式python shell,它对于探索numpy的特性是非常方便的;b、matplotlib可以让你进行plot 图表;c、SciPy提供许多工作在numpy顶端的科学的例子。
2、基础知识
numpy的主要对象是同质多维数组。也就是在一个元素(通常是数字)表中,元素的类型都是相同的。其中可以通过正整数的元组来对元素进行索引。在numpy中数组的维度被称为轴(axes),轴的数量称为秩(rank)。例如,在3维空间中一个点[1,2,1]的坐标就是秩为1的数组,因为它只有一个轴。这个轴的长度为3。下面的例子中,数组的秩为2(因为是2维的)。第一个维度(轴)的大小是2,第二个维度的大小是3:
numpy的数组类被成为ndarray。别名为array。numpy.array与标准python库类array.array不一样,标准库类中的那个只能处理一维数组并且功能更少。ndarray对象的重要的属性有:
ndarray.ndim:数组的轴(维度)的数量。在python中,维度的数量通常被称为rank。
ndarray.shape:数组的维度。为一个整数元组,表示每个维度上的大小。对于一个n行m列的矩阵来说,shape就是(n,m)。shape元组的长度就是秩(或者维度的数量)ndim。
ndarray.size:数组的元素的总个数。这等于shape元素的乘积。
ndarray.dtype:用来描述数组中元素类型的对象。可以用标准python类型来创建或指定dtype;或者在后面,加上numpy的类型。numpy.int32;numpy.int16;numpy.float64等等
ndarray.itermsize:数组的每个元素的字节大小。例如,一个类型为float64的元素的数组itemsize 为8(=64/8),而一个complex32的数组itersize为4(=32/8)。该属性等价于ndarray.dtype.itemsize。
ndarray.data:该缓冲区包含了数组的实际元素。通常情况下,我们不需要使用这个属性,因为我们会使用索引的方式来访问数组中的元素。
1)例子
2)构建数组
有几种方法来构建数组。例如可以通过一个常规的python列表或者使用array函数的元组来构建。可以通过调用生成后数组的属性dtype来了解该数组的元素类型:
经常犯得的错误:调用array的时候,传递了多个数值参数,而不是使用单一的数字列表:
array会将序列的序列转换成2维的数组,序列的序列的序列会转换成3维的数组,等等:
数组的类型同样可以在创建的时侯显式指定:
通常来说,数组中元素的值在开始的时候是未知的,不过数组的大小是已知的。所以numpy提供几个函数在创建数组的时候对元素的值进行占位。这样就可以避免后续需要对数组进行动态增长的操作(数组的动态增长的代价较大)。函数zeros生成一个全为0的数组;函数ones生成一个全为1的数组,函数empty生成一个初始化内容为随机并且依赖于内存状态的数组。默认情况下,生成的数组的dtype是float64:
为了生成数字序列。numpy提供一个类似于range的函数,返回一个列表,参数为(起始,结束,步长):
当传递的参数是浮点数时,因为浮点数精度是有限的,所以通常不会有稳定的元素个数的保证。所以,使用函数linspace是一个更好的选择,因为我们可以对该函数指定需要创建多少个元素,参数为(起始,结