当使用Numpy模块建立ndarray数据类型的数组后,可以获得ndarray的属性,以下是几个ndarray常用的属性。
ndarray.dtype :数组元素类型。
ndarray.itemsize :数组元素数据类型大小(或称所占空间),单位为 字节 。
ndarray.ndim :数组的维度。
ndarray.shape :数组维度元素个数的元组,也可以用于调整数组大小。
ndarray.size :数组元素个数。
可以使用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 :浮点数数组的建立与打印。
上述所建立的一维数组如下所示。
在使用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行意义相同,读者可以了解引用索引方式。
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程序实例。
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程序实例。
empty( ) 函数可以建立指定形状与数据类型内容的数组,数组内容未初始化,语法如下:
np.empty(shape, dtype=float)
上述参数意义如下:
shape
:数组外形。
dtype
:默认是浮点型数据类型(float),也可以用此设定数据类型。
程序实例 ch3_6.py: 分别建立1×3一维和2×3二维外形的未初始化数组,一维数组元素数据类型是 浮点型 (float),二维数组元素数据类型是 8 位无符号整数 (unit8)。
执行结果
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的二维数组的随机数。
执行结果
arange( ) 函数可以建立数组数据,语法如下:
np.arange(start, stop, step) # start和step可以省略
参数 start 是起始值,如果省略则 默认值是 0 ;参数 stop 是结束值,但是所产生的数组不包含此值;参数 step 是数组相邻元素的间距,如果省略则 默认值是 1 。
程序实例 ch3_7_1.py: 建立连续数值0~15的一维数组。
执行结果
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)。
执行结果