认识NumPy数组对象
NumPy作为高性能科学计算和数据分析的基础包,它是本书介绍的其它重要数据分析工具的基础,掌握NumPy的功能及其用法,将有助于后续其他数据分析工具的学习。
NumPy中最重要的一个特点就是其N维数组对象,即ndarray(别名array)对象,该对象具有矢量算术能力和复杂的广播能力,可以执行一些科学计算。不同于Python标准库,ndarray对象拥有对高维数组的处理能力,这也是数值计算中缺一不可的重要特性。
ndarray对象中定义了一些重要的属性,具体如表1所示。
表1 ndarray对象的常用属性
属性 | 具体说明 |
---|---|
ndarray.ndim | 维度个数,也就是数组轴的个数,比如一维、二维、三维等 |
ndarray.shape | 数组的维度。这是一个整数的元组,表示每个维度上数组的大小。例如,一个n行和m列的数组,它的shape属性为(n,m) |
ndarray.size | 数组元素的总个数,等于shape属性中元组元素的乘积 |
ndarray.dtype | 描述数组中元素类型的对象,既可以使用标准的Python类型创建或指定,也可以使用NumPy特有的数据类型来指定,比如numpy.int32、numpy.float64等 |
ndarray.itemsize | 数组中每个元素的字节大小。例如,元素类型为float64的数组有8(64/8)个字节,这相当于ndarray.dtype.itemsize |
值得一提的是,ndarray对象中存储元素的类型必须是相同的。
为了让读者更好地理解ndarray,接下来,通过一些示例来演示ndarray对象 的使用,具体代码如下。
In [1]: import numpy as np # 导入NumPy工具包
In [2]: data = np.arange(12).reshape(3, 4) # 创建一个3行4列的数组
In [3]: data
Out[3]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [4]: type(data)
Out[4]: numpy.ndarray
In [5]: data.ndim # 数组维度的个数,输出结果2,表示二维数组
Out[5]: 2
In [6]: data.shape # 数组的维度,输出结果(3,4),表示3行4列
Out[6]: (3, 4)
In [7]: data.size # 数组元素的个数,输出结果12,表示总共有12个元素
Out[7]: 12
In [8]: data.dtype # 数组元素的类型,输出结果dtype('int64'),表示元素类型都是int64
Out[8]: dtype('int64')
上述示例中,第1行代码使用import...as语句导入numpy库,并将其取别名为np,表示后续会用np代替numpy执行操作。
第2行代码使用arange()和reshape()函数,创建了一个3行4列的数组data。其中,arange()函数的功能类似于range(),只不过arange()函数生成的是一系列数字元素的数组;reshape()函数的功能是重组数组的行数、列数和维度。
第4行代码使用type()函数查看了数组的类型,输出结果为numpy.ndarray。
第5行代码获取了数组的维度个数,返回结果为2,表示二维数组。
第6行代码获取了数组的维度,返回结果为(3,4),表示数组有3行4列。
第7行代码获取了数组中元素的总个数,返回结果为12,表示数组中一共有12个元素。
第8行代码获取了元素的具体类型,返回结果为dtype('int64'),表示元素的类型为int64。