NumPy入门系列(二)

NumPy入门系列(二)

NumPy入门系列(一)

快速的元素级数组函数

对ndarray中的数据执行元素级运算的函数,即函数作用于数组中的每一个元素:

NumPy入门系列(二)

上面的函数都是一元函数,即传递单个数组作为参数,以下是常见的一元函数:

NumPy入门系列(二)

下面是二元函数的用法(传递两个数组),大部分二元函数都可以用简单的数学运算符替代:

NumPy入门系列(二)

以下是常见的二元函数:

NumPy入门系列(二)

另外这些函数可以接受一个out可选参数,这样就能在数组原地进行操作:

NumPy入门系列(二)

有些函数可能返回多个数组:

NumPy入门系列(二)

利用数组进行数据处理

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

作为简单的例子,假设我们想要在一组值(网格型)上计算函 数 sqrt(x^2+y^2),并返回灰度图像:

NumPy入门系列(二)

条件逻辑与数组运算np.where

numpy.where函数是三元表达式x if condition else y的矢量化版本,其语法为:

<code>where(condition, [x, y])
Return elements chosen from `x` or `y` depending on `condition`.
condition :条件数组
x:满足条件返回值(x中的元素),可以是数组,也可以是数据(可以广播)
y:不满足条件的返回值/<code>
NumPy入门系列(二)

再看一例应用:

NumPy入门系列(二)

数学和统计方法

可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算,axis0列,axis1行:

NumPy入门系列(二)

NumPy入门系列(二)

用于布尔型数组的方法

NumPy入门系列(二)

应用,统计符合条件的元素个数:

NumPy入门系列(二)

排序

NumPy入门系列(二)

唯一化以及其它的集合逻辑

NumPy提供了一些针对一维ndarray的基本集合运算。最常用的可能要数np.unique 了,它用于找出数组中的唯一值并返回已排序的结果:

<code>np.unique(
    arr,
    return_index=False,
    return_inverse=False,
    return_counts=False,
    axis=None,
)/<code>
NumPy入门系列(二)

用于数组的文件输入输出

NumPy能够读写磁盘上的文本数据或二进制数据。NumPy能够读写磁盘上的文本数据或二进制数据。

np.savez可以将多个数组保存到一个未压缩文件中,将数组以关键字参数的形 式传入即可:

NumPy入门系列(二)

线性代数库numpy.linalg

NumPy入门系列(二)

NumPy入门系列(二)

常用的linalg函数:

NumPy入门系列(二)

random模块

NumPy入门系列(二)

常用的random函数:

NumPy入门系列(二)

NumPy入门系列(二)

NumPy应用实例---随机漫步

我们通过模拟随机漫步来说明如何运用数组运算。先来看一个简单的随机漫步的例 子:从0开始,步长1和-1出现的概率相等。先来看纯Python实现:

NumPy入门系列(二)

numpy可以很简单的完成这项工作并做一些统计工作:

NumPy入门系列(二)

NumPy入门系列(二)


分享到:


相關文章: