网站站群,做网站 带宽 多少钱,安徽建设工程监督和信用平台,什么是网站原创文章NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式#xff08;否则需要编 写循环#xff09;。用数组表达式代替循环的做法#xff0c;通常被称为矢量化。一般来说#xff0c;矢量化 数组运算要比等价的纯Python方式快上一两个数量级#xff08;甚至更多…NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式否则需要编 写循环。用数组表达式代替循环的做法通常被称为矢量化。一般来说矢量化 数组运算要比等价的纯Python方式快上一两个数量级甚至更多尤其是各种数值计算。
作为简单的例子假设我们想要在一组值网格型上计算函数 sqrt(x^2y^2) 。np.meshgrid函数接受两个一维数组并产生两个二维矩阵对应于两个数组中所有的(x,y)对 现在对该函数的求值运算就好办了把这两个数组当做两个浮点数那样编写表达式即可 一、数组的条件逻辑运算
假设我们有一个布尔数组和两个值数组我们想要根据cond中的值选取xarr和yarr的值当cond中的值为True时选取xarr的值否则从yarr中选取。 使用列表推导可以实现 这有几个问题。第一它对大数组的处理速度不是很快因为所有工作都是由纯
Python完成的。第二无法用于多维数组
numpy.where函数是三元表达式x if condition else y的矢量化版本若使用np.where则可以将该功能写得非常简洁 在数据分析工作中where通常用于根据另一个数组而产生一个新的数组。
假设有一个由随机数据组成的矩阵你希望将所有正值替换为2将所有负值替换为2。若利用np.where则会非常简单 使用np.where可以将标量和数组结合起来。传递给where的数组大小可以不相等甚至可以是标量值。
例如我可用常数2替换arr中所有正的值第 4 章 NumPy 基础数组和矢量计算 二、数学和统计方法
可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算。
表4-5列出了全部的基本数组统计方法。后续章节中有很多例子都会用到这些方法。 这类统计函数的调用方法有两种
arr.mean() 或者 np.mean(arr)
例如 这类的函数可以接受一个axis选项参数用于计算该轴向上的统计值最终结果是一个少一维的数组
axis1表示列方向即对行的统计axi0:表示行方向即对列的统计。 这里arr.mean(1)是“计算行的平均值”arr.sum(0)是“计算每列的和”。
其他如cumsum和cumprod之类的方法则不聚合而是产生一个由中间结果组成的 数组 在多维数组中累加函数如cumsum返回的是同样大小的数组但是会根据每个低维的切片沿着标记轴计算部分聚类 三、用于布尔型数组的方法
在上面这些方法中布尔值会被强制转换为1True和0False。因此sum经常被用来对布尔型数组中的True值计数 另外还有两个方法any和all它们对布尔型数组非常有用。
any用于测试数组中是否存在一个或多个True而all则检查数组中所有值是否都是True
这两个方法也能用于非布尔型数组所有非0元素将会被当做True。 四、排序
跟Python内置的列表类型一样NumPy数组也可以通过sort方法就地排序 多维数组可以在任何一个轴向上进行排序只需将轴编号传给sort即可 顶级方法np.sort返回的是数组的已排序副本而就地排序则会修改数组本身。
计算数组分位数最简单的办法是对其进行排序然后选取特定位置的值 五、数组的集合运算
NumPy提供了一些针对一维ndarray的基本集合运算 最常用的可能要数np.unique了它用于找出数组中的唯一值并返回已排序的结果 另一个函数np.in1d用于测试一个数组中的值在另一个数组中的成员资格返回一个布尔型数组