教程|使用数组进行数组编程(上)

教程|使用数组进行数组编程(上)

教程|使用数组进行数组编程(上)

访问flyai.club,一键创建你的人工智能项目

教程|使用数组进行数组编程(上)

知识点1:使用数组编程的优点

NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。用数组表达式代替循环的做法,通常被称为矢量化。一般来说,矢量化数组运算要比等价的纯Python方式快上一两个数量级(甚至更多),尤其是各种数值计算。

作为简单的例子,假设我们想要在一组值(网格型)上计算函数sqrt(x^2+y^2)。np.meshgrid函数接受两个一维数组,并产生两个二维矩阵(对应于两个数组中所有的(x,y)对)

教程|使用数组进行数组编程(上)

现在,对该函数的求值运算就好办了,把这两个数组当做两个浮点数那样编写表达式即可:

教程|使用数组进行数组编程(上)

使用上面生成的数据进行构图

教程|使用数组进行数组编程(上)

教程|使用数组进行数组编程(上)

知识点2:将条件逻辑表述为数组运算

numpy.where函数是三元表达式x if condition else y的矢量化版本。假设我们有一个布尔数组和两个值数组:

教程|使用数组进行数组编程(上)

假设我们想要根据cond中的值选取xarr和yarr的值:当cond中的值为True时,选取xarr的值,否则从yarr中选取。列表推导式的写法应该如下所示:

教程|使用数组进行数组编程(上)

np.where的第二个和第三个参数不必是数组,它们都可以是标量值。在数据分析工作中,where通常用于根据另一个数组而产生一个新的数组。假设有一个由随机数据组成的矩阵,你希望将所有正值替换为2,将所有负值替换为-2。若利用np.where,则会非常简单:

教程|使用数组进行数组编程(上)

使用np.where,可以将标量和数组结合起来。例如,我可用常数2替换arr中所有正的值:

教程|使用数组进行数组编程(上)

传递给where的数组大小可以不相等,甚至可以是标量值。

知识点3:数学和统计方法

可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算。sum、mean以及标准差std等聚合计算(aggregation,通常叫做约简(reduction))既可以当做数组的实例方法调用,也可以当做顶级NumPy函数使用。

这里,我生成了一些正态分布随机数据,然后做了聚类统计:

教程|使用数组进行数组编程(上)

mean和sum这类的函数可以接受一个axis选项参数,用于计算该轴向上的统计值,最终结果是一个少一维的数组:

教程|使用数组进行数组编程(上)

其他如cumsum和cumprod之类的方法则不聚合,而是产生一个由中间结果组成的数组:

教程|使用数组进行数组编程(上)

在多维数组中,累加函数(如cumsum)返回的是同样大小的数组,但是会根据每个低维的切片沿着标记轴计算部分聚类:

教程|使用数组进行数组编程(上)

基本的数组统计方法

教程|使用数组进行数组编程(上)

教程|使用数组进行数组编程(上)

教程|使用数组进行数组编程(上)

教程 | Jupyter Notebook初级教程——迷死人的基础操作

教程 | Jupyter Notebook基础教程——快捷键的使用

教程 | Python之Numpy ndarray 基本介绍 1

教程 | Python之Numpy ndarray 基本介绍 2

教程 | Python之Numpy ndarray 基本介绍 3

教程|Python之Numpy ndarray 基本介绍 4

教程 | 通用函数:快速的元素级数组函数

点击 了解更多 ,动手操作

— End —

教程|使用数组进行数组编程(上)

猜你喜欢

转载自blog.csdn.net/iFlyAI/article/details/82993874