Python数据挖掘实战(微课版)
上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)