文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Numpy数值积分如何实现

2023-07-05 05:46

关注

本篇内容主要讲解“Numpy数值积分如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Numpy数值积分如何实现”吧!

连乘连加元素连乘prod, nanprod;元素求和sum, nansum
累加累加cumsum, nancumsum;累乘cumprod, nancumprod

求和

在Numpy中可以非常方便地进行求和或者连乘操作,对于形如 x 0 , x 1 , ⋯   , xn的数组而言,其求和 ∑xi或者连乘 ∏xi分别通过sumprod实现。

x = np.arange(10)print(np.sum(x))    # 返回45print(np.prod(x))   # 返回0

这两种方法均被内置到了数组方法中,

x += 1x.sum()     # 返回55x.prod()    # 返回3628800

有的时候数组中可能会出现坏数据,例如

x = np.arange(10)/np.arange(10)print(x)# [nan  1.  1.  1.  1.  1.  1.  1.  1.  1.]

其中x[0]由于是0/0,得到的结果是nan,这种情况下如果直接用sum或者prod就会像下面这样

>>> x.sum()nan>>> x.prod()nan

为了避免这种尴尬的现象发生,numpy中提供了nansumnanprod,可以将nan排除后再进行操作

>>> np.nansum(x)9.0>>> np.nanprod(x)1.0

累加和累乘

和连加连乘相比,累加累乘的使用频次往往更高,尤其是累加,相当于离散情况下的积分,意义非常重大。

from matplotlib.pyplot as pltxs = np.arange(100)/10ys = np.sin(xs)ys1 = np.cumsum(ys)/10plt.plot(xs, ys)plt.plot(xs, ys1)plt.show()

效果如图所示

Numpy数值积分如何实现

cumprood可以实现累乘操作,即

x = np.arange(1, 10)print(np.cumprod(x))# [     1      2      6     24    120    720   5040  40320 362880]

sum, prod相似,cumprodcumsum也提供了相应的nancumprod, nancumsum函数,用以处理存在nan的数组。

>>> x = np.arange(10)/np.arange(10)<stdin>:1: RuntimeWarning: invalid value encountered in true_divide>>> np.cumsum(x)array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])>>> np.nancumsum(x)array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])>>> np.nancumprod(x)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

trapz

cumsum操作是比较容易理解的,可以理解为离散化的差分,比如

>>> x = np.arange(5)>>> y = np.cumsum(x)>>> print(x)array([0, 1, 2, 3, 4])>>> print(y)array([ 0,  1,  3,  6, 10])

trap为梯形积分求解器,同样对于[0,1,2,3,4]这样的数组,那么稍微对高中知识有些印象,就应该知道[0,1]之间的积分是Numpy数值积分如何实现,此即梯形积分

>>> np.trapz(x)8.0

接下来对比一下trapzcumsum作用在 sin ⁡ x \sin x sinx上的效果

from matplotlib.pyplot as pltxs = np.arange(100)/10ys = np.sin(xs)y1 = np.cumsum(ys)/10y2 = [np.trapz(ys[:i+1], dx=0.1) for i in range(100)]plt.plot(xs, y1)plt.plot(xs, y2)plt.show()

结果如图,可见二者差别极小。

Numpy数值积分如何实现

到此,相信大家对“Numpy数值积分如何实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯