网络直播平台搭建,seo文章代写平台,wordpress 主题 更新,做的很酷炫的网站矢量化NumPy数组可以将许多数据处理任务表述为简洁的数组表达式#xff0c;否则需要编写循环。用数组表达式代替循环的做法#xff0c;通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级#xff0c;尤其是各种数值计算。假设我们想要在一组值(网…矢量化NumPy数组可以将许多数据处理任务表述为简洁的数组表达式否则需要编写循环。用数组表达式代替循环的做法通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级尤其是各种数值计算。假设我们想要在一组值(网格型)上计算函数sqrt(x^2 y^2)。np.meshgrid()函数接受两个一维数组并产生两个二维矩阵对应于两个数组中所有的(x, y)对。points np.arange(-5, 5, 0.01) #1000个间隔相等的点。xs, ys np.meshgrid(points, points)z np.sqrt(xs ** 2 ys ** 2)将条件逻辑表述为数组运算np.where()函数是三元表达式 x if condition else y的矢量化版本。假设我们有一个布尔数组和两个值数组这有一些问题。第一它对大数组的处理速度不是很快第二无法用于多维数组。若使用np.where()则可以将该功能写得非常简洁。np.where()的第二个和第三个参数不必是数组也可以是标量值。where()通常用于根据另一个数组产生一个新的数组。np.where()可以表述更加复杂的逻辑。 #Pythonresult []for i in range(n): if cond1[i] and cond2[i]: result.append(0) elif cond1[i]: result.append(1) elif cond2[i]: result.append(2) else: result.append(3)#NumPynp.where(cond1 cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))#利用布尔值在计算过程中可以被当做0或1处理result 1 * (con1 - cond2) 2 * (con2 -cond1) 3 * -(cond1 | cond2)数学和统计方法用于布尔型数组的方法在使用基本统计方法时布尔值会被强制转换为1和0因此sum经常被用来对布尔型数据中的True值计数。另外还有两个方法any()和all()它们对布尔型数组非常有用。any()用于测试数组中是否存在一个或多个True而all()则检查数组中所有制是否都是True两个方法均返回布尔值结果。这两个方法也可用于非布尔型数组所有非0元素均会被当作True。排序与Python内置的列表类型一样NumPy数组也可以通过sort方法就地排序(会对原数组进行操作)。多维数组可以在任何一个轴向上进行排序只需将轴编号传给sort即可。顶级方法np.sort()返回的是数组的已排序副本而就地排序则会修改数组本身。计算数组分位数最简单的方法是对其进行排序然后取特定位置的值唯一化以及其他的集合逻辑。NumPy提供了一些针对一维ndarray()的基本集合运算最常用的可能要数np.unique()了它用于找出数组中的唯一值并返回已排序的结果。拿跟np.unique()等价的纯Python代码对比一下另一个函数np.in1d()用于测试一个数组中的值在另一个数组中的成员资格返回一个布尔型数组