上QQ阅读APP看书,第一时间看更新
2.1.2 Ndarray的属性
Ndarray有dtype(数据类型)、ndim(维数)和shape(形状)3个重要的属性。
1.dtype属性
与Python内置的列表和元组不同,在同一个Ndarray中,所有元素的数据类型必须相同。NumPy中常用的数据类型如表2-1所示。
表2-1 NumPy的常用数据类型
表2-1中所列举的数据类型均为NumPy内嵌的数据类型,因此在使用时需要使用NumPy类来引用。例如,调用int8这一数据类型,需要使用语句:np.int8。
需要特别注意的是,每种数据类型的表示范围和精度均不相同,使用者需要根据具体场景的不同,选择恰当的数据类型。例如,np.int8使用有符号的8位二进制数表示一个整数,其中最高位二进制表示数据的正负,剩余7位表示整数的绝对值。因此,np.int8的数据表示范围为[-127,127]。如果运算结果超过了该范围,则会发生溢出,此时不应该选择np.int8这一数据类型。
在使用2.1.1节的函数创造Ndarray时,均可通过设置dtype参数指定其数据类型。对于已有数组,可以通过查看数组对象的dtype属性确认其数据类型,也可以使用astype()函数对数组对象的类型进行转换。代码2-6展示了查看和转换数据对象的类型的操作。
代码2-6 对数组的数据类型进行操作
import numpy as np a = np.ones((2, 3), dtype = np.float32) #生成2×3形状的float32数组 print("数组对象a的类型:\n", a.dtype) a = a.astype(np.int32) #将float32数据转换为整型数组 print("数组对象a的类型:\n", a.dtype)
上述代码的输出结果为
数组对象a的类型: float32 数组对象a的类型: int32
2.ndim和shape属性
ndim属性用来参看数组对象的维数,即具有多少个维度。shape属性可以获得数组对象的形状,即在每个维度的具体大小。代码2-7展示了使用它们查看数组维数和形状的操作。
代码2-7 ndim和shape属性的使用
import numpy as np a = np.ones((3, 4), dtype = np.int32) print("数组a的维数:", a.ndim) print("数组a的形状:", a.shape)
上述代码的输出结果为
数组a的维数:2 数组a的形状:(3, 4)