购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3-3 建立一维或多维数组

3-3-1 认识ndarray的属性

当使用Numpy模块建立ndarray数据类型的数组后,可以获得ndarray的属性,以下是几个ndarray常用的属性。

ndarray.dtype :数组元素类型。

ndarray.itemsize :数组元素数据类型大小(或称所占空间),单位为 字节

ndarray.ndim :数组的维度。

ndarray.shape :数组维度元素个数的元组,也可以用于调整数组大小。

ndarray.size :数组元素个数。

3-3-2 使用array( )函数建立一维数组

可以使用array( )函数建立一维数组,array( )函数的调用指令如下:

     numpy.array(object, dtype=None, copy=True, order=‘K’, subok=False, ndmin)

上述参数意义如下。

object :数组数据。

dtype :数据类型,如果省略将使用可以容纳数据最省的类型。

copy :布尔值,默认是True,object内容会被复制,3-4-4节会有实例。

order :用于设定内存存储数组的顺序,值可以是‘K’、‘A’、‘C’、‘F’。如果object不是数组,新建立的数组将依照‘C’排列,也就是依照 (row)排列。如果object是数组,则以下成立。

‘K’ :元素在内存中的顺序。

‘A’ :元素原先顺序。

‘C’ :依行排列。

‘F’ :依列排列。

subok :布尔值,如果是True,将传递子类别。默认是False,返回的数组将被强制为基类。

ndmin :设定数组应该具有的最小维度。

建立时在小括号内填上中括号,然后将数组数值放在中括号内,彼此用逗号隔开。

实例 1 :建立一个一维数组,数组内容是1, 2, 3,同时列出数组的数据类型。

上述所建立的浮点数数组如下。

数组建立好后,可以用索引方式取得或设定内容。

实例 2 :列出数组元素内容。

实例 3 :设定数组内容。

实例 4 :认识ndarray的属性。

上述x.dtype获得int32,表示是32位的整数。x.itemsize是数组元素大小,其中以字节为单位,1字节是8位,由于元素是32位整数,所以返回是4。x.ndim返回数组维度是1,表示这是一维数组。x.shape以元组方式返回第一维元素个数,此处是3,后面对二维数组还会解说。x.size则是返回元素个数。

实例 5 :array( )函数也可以接受使用dtype参数设定元素的数据类型。

上述因为元素是8位整数,所以执行x.itemsize,所得的结果是1。

实例 6 :浮点数数组的建立与打印。

上述所建立的一维数组如下所示。

3-3-3 使用array( )函数建立多维数组

在使用array( )建立数组时,通过设定参数ndmin就可以建立多维数组。

程序实例 ch3_1.py: 建立二维数组。

执行结果

程序实例 ch3_2.py: 以另一种设定二维数组的方式,重新设计ch3_1.py。

执行结果

上述所建立的二维数组,与二维数组索引的图形如下所示。

也可以用x[0, 2]代表x[0][2],可以参考以下实例。在实际应用中, x[0, 2] 的表达方式更常用。

程序实例 ch3_3.py: 认识引用二维数组索引的方式。

执行结果

上述代码第5行与第8行意义相同,读者可以了解引用索引方式。

3-3-4 使用zeros( )函数建立内容是0的多维数组

zeros( ) 函数可以建立内容是0的数组,语法如下:

     np.zeros(shape, dtype=float)

上述参数意义如下:

shape :数组外形。

dtype :默认是浮点型数据类型,也可以用此参数设定数据类型。

程序实例 ch3_4.py: 分别建立1×3一维和2×3二维外形的数组,一维数组元素数据类型是 浮点型 (float),二维数组元素数据类型是 8 位无符号整数 (unit8)。

执行结果

在实际应用中,常用zeros( )函数建立二维数组,也可以说是建立一个图像,因为所建立的内容是0,相当于建立 黑色图像 ,在本书第5章会有实例解说,如果读者想要先了解一下也可以参考本书所附的ch3_4_1.py程序实例。

3-3-5 使用ones( )函数建立内容是1的多维数组

ones( ) 函数可以建立内容是1的数组,语法如下:

     np.ones(shape, dtype=None)

上述参数意义如下:

shape :数组外形。

dtype :默认是64浮点型数据类型(float64),也可以用此参数设定数据类型。

程序实例 ch3_5.py: 分别建立1×3一维和2×3二维外形的数组,一维数组元素数据类型是 浮点型 (float),二维数组元素数据类型是 8 位无符号整数 (unit8)。

执行结果

在实际应用中,常用ones( )函数建立二维数组,也可以说是建立一个图像。假设要建立白色图像,可以将结果乘以255,在本书第5章会有实例解说,如果读者想要先了解一下也可以参考本书所附的ch3_5_1.py程序实例。

3-3-6 使用empty( )函数建立未初始化的多维数组

empty( ) 函数可以建立指定形状与数据类型内容的数组,数组内容未初始化,语法如下:

     np.empty(shape, dtype=float)

上述参数意义如下:

shape :数组外形。

dtype :默认是浮点型数据类型(float),也可以用此设定数据类型。

程序实例 ch3_6.py: 分别建立1×3一维和2×3二维外形的未初始化数组,一维数组元素数据类型是 浮点型 (float),二维数组元素数据类型是 8 位无符号整数 (unit8)。

执行结果

3-3-7 使用random.randint( )函数建立随机数内容的多维数组

random.randint( ) 函数可以建立随机数内容的数组,语法如下:

     np.random.randint(low, high=None, size=None, dtype=int)

上述参数意义如下:

low :随机数的最小值(含此值)。

high :这是可选项,如果有此参数代表随机数的最大值(不含此值)。如果不含此参数,则随机数是0~low。

size :这是可选项,表示数组的维数。

dtype :默认是整数数据类型(int),也可以用此设定数据类型。

程序实例 ch3_7.py: 分别建立单一随机数、含10个元素数组的随机数、3×5的二维数组的随机数。

执行结果

3-3-8 使用arange( )函数建立数组数据

arange( ) 函数可以建立数组数据,语法如下:

     np.arange(start, stop, step      # startstep可以省略

参数 start 是起始值,如果省略则 默认值是 0 ;参数 stop 是结束值,但是所产生的数组不包含此值;参数 step 是数组相邻元素的间距,如果省略则 默认值是 1

程序实例 ch3_7_1.py: 建立连续数值0~15的一维数组。

执行结果

3-3-9 使用reshape( )函数更改数组形式

reshape( ) 函数可以更改数组形式,语法如下:

     np.reshape(a, newshape)

参数 a 是要更改的数组;参数 newshape 是新数组的外形,可以是整数或元组。

程序实例 ch3_7_2.py: 将1×16数组改为2×8数组。

执行结果

有时候reshape( )函数的newshape元组的其中一个元素是-1,这表示将依照另一个元素安排元素内容。

程序实例 ch3_7_3.py: 重新设计ch3_7_2.py,但是newshape元组的其中一个元素是-1,整个newshape内容是(4, -1)。

执行结果

程序实例 ch3_7_4.py: 重新设计ch3_7_2.py,但是newshape元组的其中一个元素是-1,整个newshape内容是(-1, 8)。

执行结果 HfPfQLBAPZiaD2u6oD6m5V6SboxD1ihFCcdYcntIfjOkRku5NuPsGFqN4I+TugD8

点击中间区域
呼出菜单
上一章
目录
下一章
×