中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Numpy數值積分如何實現

發布時間:2023-02-23 11:14:54 來源:億速云 閱讀:106 作者:iii 欄目:開發技術

本篇內容主要講解“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))    # 返回45
print(np.prod(x))   # 返回0

這兩種方法均被內置到了數組方法中,

x += 1
x.sum()     # 返回55
x.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 plt
xs = np.arange(100)/10
ys = np.sin(xs)
ys1 = np.cumsum(ys)/10
plt.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 plt
xs = np.arange(100)/10
ys = np.sin(xs)
y1 = np.cumsum(ys)/10
y2 = [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數值積分如何實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌乐县| 盐城市| 健康| 阿荣旗| 寿阳县| 灌阳县| 巴塘县| 乐清市| 巴里| 织金县| 明水县| 澄迈县| 乌兰浩特市| 红原县| 沈阳市| 沛县| 砀山县| 广汉市| 佛山市| 会泽县| 自贡市| 体育| 新乐市| 华池县| 当雄县| 游戏| 永靖县| 青川县| 绍兴市| 台南市| 三亚市| 卢湾区| 攀枝花市| 康平县| 桐梓县| 达拉特旗| 米脂县| 新巴尔虎右旗| 谢通门县| 会昌县| 信宜市|