结构数组的构建
结构数组,首先需要定义结构,然后利用`np.array()`来创建数组,其参数`dtype`为定义的结构。
1、利用字典来定义结构
personType = np.dtype({
'names':['name','height','weight'],
'formats':['U30','f8','f8']})
a = np.array([('Jerry',189,79),('Tom',206,100),('James',206,110)],dtype=personType)
print(a,type(a))
#[('Jerry', 189., 79.) ('Tom', 206., 100.) ('James', 206., 110.)]
#<class 'numpy.ndarray'>
2、利用包含多个元组的列表来定义结构
personType = np.dtype([('name', 'U30'), ('height', 'f8'), ('weight', 'f8')])
a = np.array([('Jerry',189,79),('Tom',206,100),('James',206,110)],dtype=personType)
print(a,type(a))
#[('Jerry', 189., 79.) ('Tom', 206., 100.) ('James', 206., 110.)]
#<class 'numpy.ndarray'>
结构数组的取值方式和一般数组差不多,可以通过下标取得元素:
print(a[0])
#('Jerry', 189., 79.)
print(a[-2:])
#[('Tom', 206., 100.) ('James', 206., 110.)]
我们可以使用字段名作为下标获取对应的值
print(a['name'])
#['Jerry' 'Tom' 'James']
print(a['height'])
#[189. 206. 206.]
数组的属性
`numpy.ndarray.ndim`用于返回数组的维数(轴的个数)也称为秩,一维数组的秩为 1,二维数组的秩为 2,以此类推。
`numpy.ndarray.shape`表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 `ndim` 属性(秩)。
`numpy.ndarray.size`数组中所有元素的总量,相当于数组的`shape`中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。
`numpy.ndarray.dtype` `ndarray` 对象的元素类型。
`numpy.ndarray.itemsize`以字节的形式返回数组中每一个元素的大小。
a = np.array([1,2,3,4,5,6])
print(a.dtype)
print(a.ndim)
print(a.shape)
print(a.size)
print(a.itemsize)
#int32
#1
#(6,)
#6
#4
b = np.array(([1,2,3],[4,5,6.0]))
print(b.dtype)
print(b.ndim)
print(b.shape)
print(b.size)
print(b.itemsize)
#float64
#2
#(2, 3)
#6
#8