亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

手机| 普格县| 漾濞| 蓬溪县| 河池市| 岚皋县| 遵义县| 额济纳旗| 贵德县| 进贤县| 会泽县| 太仓市| 松桃| 五原县| 资溪县| 开平市| 东兰县| 惠水县| 潮州市| 珠海市| 江津市| 宜昌市| 盘山县| 翼城县| 波密县| 涟源市| 闵行区| 巩留县| 阳春市| 汪清县| 西青区| 双峰县| 景东| 兰考县| 同江市| 措美县| 黄浦区| 中宁县| 绍兴县| 枣阳市| 平昌县|