NumPy Ndarray 对象(2)
1.
NumPy数组 和 原生Python Array(数组)之间有几个重要的区别:
-
NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
-
NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
-
NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。 -
NumPy 的大部分功能的基础:矢量化和广播:
Numpy实现矢量化运算的核心思想是将数组的操作转换为对整个数组或某个轴向的操作,而不是对数据的逐个操作。这种操作方式可以利用现代计算机的并行处理能力,提高运算效率,并且可以简化代码,降低出错的概率。具体来说,Numpy实现矢量化运算的过程包括以下几个方面:
内存连续性:Numpy数组的内存布局通常是连续的,这使得数组的元素可以被高效地访问和操作。
广播机制:Numpy中的广播机制可以让不同形状的数组进行运算,而不需要进行显示的重复扩展,从而避免了生成大量临时数组的开销。
通用函数:Numpy提供了许多通用函数(ufunc),这些函数可以对数组进行逐元素的操作,并且可以支持广播机制,实现高效的矢量化运算。C语言实现:Numpy中许多关键部分都是使用C语言实现的,这使得它可以利用CPU的向量化指令集,提高运算效率。总之,Numpy通过内存连续性、广播机制、通用函数和C语言实现等方法,实现了高效的矢量化运算,从而大大提高了数组运算的速度和效率
广播的核心思想:两个形状相同的NumPy数组之间的操作是按元素操作的,对于大小不同的数组,按照广播规则来进行
感悟:
感悟: 1. Ndarry 针对科学,数学计算场景,优化了自己的数据结构,通过好的算法,提高了计算执行效率(算法 + 数据结构 = 程序 )
- 如果你已经下定决心要学习程序开发。那怎么开始?
从问题出发。你想解决什么问题?处理什么数据?最后达到什么效果?从事哪个领域?如果你已经下定决心要学习程序开发。那怎么开始?
相关链接
numpy入门教程
numpy菜鸟教程
numpy的矢量化理解1
numpy的矢量化和广播理解2
numpy的矢量化和广播理解3|数组操作
道阻且长,行则将至;行而不辍,未来可期 -- 《荀子·修身》