91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

彩票| 长垣县| 那坡县| 定襄县| 聂荣县| 青阳县| 分宜县| 庄河市| 新平| 文山县| 南召县| 林口县| 秦皇岛市| 松潘县| 保定市| 孟津县| 西安市| 五原县| 博爱县| 广汉市| 巴南区| 岐山县| 高雄县| 裕民县| 读书| 工布江达县| 荣成市| 荆门市| 祁门县| 潜山县| 清河县| 乌恰县| 卓尼县| 金塔县| 文登市| 化德县| 隆子县| 漳浦县| 莎车县| 泰来县| 亚东县|