Python的numpy高级应用!

Posted python1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的numpy高级应用!相关的知识,希望对你有一定的参考价值。

技术分享图片

技术分享图片

虽然NumPy用户很少会对数组的跨度信息感兴趣,但它们却是构建非复制式数组视图的重要因素。跨度甚至可以是负数,这样会使数组在内存中后向移动,比如在切片obj[::-1]或obj[:,::-1]中就是这样的。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

高级数组操作

除花式索引、切片、布尔条件取子集等操作之外,数组的操作方式还有很多。虽然pandas中的高级函数可以处理数据分析工作中的许多重型任务,但有时你还是需要编写一些在现有库中找不到的数据算法。

技术分享图片

技术分享图片

与reshape将一维数组转换为多维数组的运算过程相反的运算通常称为扁平化(flattening)或散开(raveling):

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

对于常见的连接操作,NumPy提供了一些比较方便的方法(如vstack和hstack)。因此,上面的运算还可以表达为:

技术分享图片

技术分享图片

堆叠辅助类:r_和c_

NumPy命名空间中有两个特殊的对象一r_和c_,它们可以使数组的堆叠操作更为简洁:

技术分享图片

元素的重复操作:title和repeat

对数组进行重复以产生更大数组的工具主要是repeat和tile这两个函数。repeat会将数组中的各个元素重复一定次数,从而产生一个更大的数组:

技术分享图片

tile的功能是沿指定轴向堆叠数组的副本。你可以形象地将其想象成“铺瓷砖”:

技术分享图片

花式索引的等价函数:take和put

在第4章中我们讲过,获取和设置数组子集的一个办法是通过整数数组使用花式索引:

技术分享图片

put不接受axis参数,它只会在数组的扁平化版本(一维,C顺序)上进行索引(这一点今后应该是会有所改善的)。因此,在需要用其他轴向的索引设置元素时,最好还是使用花式索引。

广播

广播(broadcasting)指的是不同形状的数组之间的算术运算的执行方式。它是一种非常强大的功能,但也容易令人误解,即使是经验丰富的老手也是如此。将标量值跟数组合并时就会发生最简单的广播:

技术分享图片

技术分享图片

广播的原则: 如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

ufunc高级应用

虽然许多NumPy用户只会用到通用函数所提供的快速的元素级运算,但通用函数实际上还有一些高级用法能使我们丢开循环而编写出更为简洁的代码。

ufunc实例方法

NumPy的各个二元ufunc都有一些用于执行特定矢量化运算的特殊方法。reduce接受一个数组参数,并通过一系列的二元运算对其值进行聚合(可指明轴向)。例如,我们可以用np.add.reduce对数组中各个元素进行求和:

技术分享图片

自定义ufunc

有两个工具可以让你将自定义函数像ufunc那样使用。numpy.frompyfunc接受一个Python函数以及两个分别表示输入输出参数数量的整数。例如,下面是一个能够实现元素级加法的简单函数:

技术分享图片

欢迎大家关注我的博客或者公众号:https://home.cnblogs.com/u/Python1234/ Python学习交流

 大家如果需要一些视频资料或者源码可以加群:125240963

以上是关于Python的numpy高级应用!的主要内容,如果未能解决你的问题,请参考以下文章

Python之深入解析Numpy的高级操作和使用

python numpy是啥库

numpy——高级索引

计算机视觉OpenCV 4高级编程与项目实战(Python版):使用NumPy创建黑白同心圆图像

计算机视觉OpenCV 4高级编程与项目实战(Python版):使用NumPy创建黑白同心圆图像

python数据分析需要哪些库?