NumPy教程之(一)

来源:互联网 发布:帝国cms支付宝接口 编辑:程序博客网 时间:2024/06/01 17:51

NumPy是Python下用于科学计算的基本软件包,它是Python下用于提供多维数组对象的库,很多对象(比如矢量和矩阵)均派生自多维数组,并且提供了各种各样的运算,比如数学运算,掩膜运算,逻辑运算,选择,排序,离散傅里叶变换,线性代数等。其中,NumPy软件包的核心是ndarray对象该对象封装了同类类型数据的多维数组,为了提升运算性能,有些操作运算是采用C/C++等编译语言实现的。NumPy数组与标准的Python序列类型有一些重要区别:

1. NumPy在创建的时候必须指定数组大小,并且在改变数组大小的时候回创建一个新的数组,原数组被删除,这一点它不像Python的  列表(list)。

2. NumPy数组中的元素必须具有相同的数据类型。

3. NumPy提供更多更方便的操作运算。

4. 虽然Python也有很多内置的相当于多维数组的对象类型,并且也提供了相应的运算,但是越来越多的科学和数学采用基于Python的软件包使用NumPy数组 ,并且大部分会先把Python内的数组类型转化为NumPy数组,用于输入和输出。并且NumPy提供的运算更高效。
NumPy的安装也很简单,本人是在Win7 64位系统下利用Anaconda4集成的Python下采用pip install numpy安装。

在NumPy中,维数被称为axes,维数的个数被称为秩(rank)。举例说明如下:

[1, 2, 1] 为一维数组,其秩(rank)为1,axes为1。axes的长度为3,

[ [ 1., 0., 0.],
[ 0., 1., 2.] ] 为二维数组,其秩(rank)为2,其axes为2,第一维(axes)的长度为3,第二维的长度也为3。

NumPy的数组类为ndarray,它的别名为array,(了解Linux系统的会知道所谓别名(alias)的用处),也就是arrayndarray代表同一个类,只是名字不同。注意,nump.array与Python标准程序库的类array.array是不一样的,它只能处理一维数组,并且运算功能也没有numpy.array丰富。下面来看一下ndarray有哪些更重要的属性:

1. ndarray.ndim

表示数组的维数或axes个数。在Python的世界里,维数被称之为秩(rank)

2. ndarray.shape

表示数组的维度,其shape用元组(tuple)表示为(m,n)的形式,表示为m行n列,并且length(shape)=ndim=rank

3. ndarray.size

表示数组中的元素个数,也即shape中的m*n。它相当于Matlab中的numel函数。

4. ndarray.dtype

表示数组中的元素类型,在创建数组时可以指定为Python标准程序库中的类型,也可指定为NumPy库自己定义的数据类型。比如,numpy.int32,numpy.float64等。

5. ndarray.itemsize

表示数组中元素占用的字节大小,以字节为单位。比如,dtype为float64的元素的itemsize为8 (=64/8)。可以直接利用运算ndarray.dtype.itemsize获取。

6. ndarray.data

包含数组实际元素的缓冲区。通常情况下,我们不会用到这个特性,因为我们一般使用索引工具访问数组中的元素。


示例:

import numpy as npa = np.arange(15)print('array a is ...')print(a)b=a.reshape(3,5)print('array b is ...')print(b)print("The b's shape is ...")print(b.shape)print("The b's ndim is ...")print(b.ndim)print("The b's dtype name is ...")print(b.dtype.name)print("The b's itemsize is ...")print(b.itemsize)c = np.array([6, 7, 8])print(c)
输出:






原创粉丝点击