Numpy数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组 Numpy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。例外情况:Python的原生数组里包含了Numpy的对象的时候,这种情况就允许不同大小元素的数组 Numpy数组有助于对大量数据进行高级数学和其他类型的操作,通常这些操作的执行效率更高,比使用python原声数组的代码更少。 越来越多的基于python的科学和数学的软件包使用Numpy数组,虽然这些工具通常都支持Python的原声数组作为参数,但它们在处理之前还是会将输入的数组转换为Numpy的数组,而且也通常输出为Numpy数组,换句话说,为了高效的使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的,还需要知道如何使用Numpy数组 **Numpy**是Python中用于科学计算的核心库,它提供了多维数组对象——`ndarray`,以及其他辅助对象和函数,使得对大量数据进行高级数学和统计运算变得更加高效。Numpy数组与Python原生的数组对象(list)有着显著的区别。 **1. Numpy数组的特性** - **固定大小**:Numpy数组在创建时即确定了大小,无法像Python list那样动态增长。如果需要改变大小,会创建一个新的数组并丢弃原来的数组。 - **统一数据类型**:所有元素必须具有相同的数据类型,这意味着它们在内存中占用相同的空间。这种特性使得数组在内存中的布局更紧凑,提高了运算效率。不过,当Python原生数组包含Numpy对象时,可以有不同大小的元素。 - **高性能运算**:Numpy数组优化了对大量数据执行数学和其他操作的速度,通常比使用Python原生数组的代码运行得更快。 - **广泛支持**:许多基于Python的科学和数学工具(如Pandas、Scipy等)默认使用Numpy数组。即使这些工具接受Python list作为参数,但在内部处理时,也会将其转换为Numpy数组,并且结果通常也是Numpy数组。因此,熟悉Numpy是进行科学计算的关键。 **2. Numpy数组的基本属性** - `ndarray.ndim`:表示数组的轴数或维度。 - `ndarray.shape`:一个整数元组,表示每个维度的大小。例如,一个2x3的矩阵,shape为(2, 3)。 - `ndarray.dtype`:描述数组元素类型的对象,可以是Python内置类型,也可以是Numpy自定义类型,如`numpy.int32`、`numpy.float64`。 - `ndarray.itemsize`:每个元素占用的字节数。 - `ndarray.data`:包含实际元素的缓冲区,通常我们直接通过索引访问数组元素。 **3. Numpy的优势** - **内存优化**:Numpy数组能连续存储,相比于Python list,存储和运算效率更高,适合大数据集处理。 - **向量化运算**:Numpy支持向量化的数学运算,可以进行大规模并行计算。 - **底层优化**:Numpy的运算在C语言级别实现,避免了Python解释器的GIL限制,执行速度更快。 **4. Ndarray的创建与操作** - 通过列表创建一维和多维数组。 - 通过特定方法生成数组:如全零数组、全一数组、均匀分布数组和正态分布数组。 - 逻辑计算:比如进行条件筛选、比较等操作。 - 数组形状修改:`reshape()`创建新的数组,`resize()`直接修改原数组大小,`T`获取数组的转置。 Numpy还提供了丰富的数组操作方法,如切片、索引、拼接、统计函数等,这些都是进行数据分析和数据挖掘时不可或缺的工具。因此,熟练掌握Numpy是提升Python科学计算能力的重要步骤。在实践中,结合其他数据科学库,如Pandas和Matplotlib,可以构建强大的数据分析工作流。
剩余10页未读,继续阅读
- 粉丝: 6
- 资源: 39
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助