1. 常用函數(shù)庫(kù)

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)南海免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
? scipy包中的stats模塊和statsmodels包是python常用的數(shù)據(jù)分析工具,scipy.stats以前有一個(gè)models子模塊,后來被移除了。這個(gè)模塊被重寫并成為了現(xiàn)在獨(dú)立的statsmodels包。
?scipy的stats包含一些比較基本的工具,比如:t檢驗(yàn),正態(tài)性檢驗(yàn),卡方檢驗(yàn)之類,statsmodels提供了更為系統(tǒng)的統(tǒng)計(jì)模型,包括線性模型,時(shí)序分析,還包含數(shù)據(jù)集,做圖工具等等。
2. 小樣本數(shù)據(jù)的正態(tài)性檢驗(yàn)
(1) 用途
?夏皮羅維爾克檢驗(yàn)法 (Shapiro-Wilk) 用于檢驗(yàn)參數(shù)提供的一組小樣本數(shù)據(jù)線是否符合正態(tài)分布,統(tǒng)計(jì)量越大則表示數(shù)據(jù)越符合正態(tài)分布,但是在非正態(tài)分布的小樣本數(shù)據(jù)中也經(jīng)常會(huì)出現(xiàn)較大的W值。需要查表來估計(jì)其概率。由于原假設(shè)是其符合正態(tài)分布,所以當(dāng)P值小于指定顯著水平時(shí)表示其不符合正態(tài)分布。
?正態(tài)性檢驗(yàn)是數(shù)據(jù)分析的第一步,數(shù)據(jù)是否符合正態(tài)性決定了后續(xù)使用不同的分析和預(yù)測(cè)方法,當(dāng)數(shù)據(jù)不符合正態(tài)性分布時(shí),我們可以通過不同的轉(zhuǎn)換方法把非正太態(tài)數(shù)據(jù)轉(zhuǎn)換成正態(tài)分布后再使用相應(yīng)的統(tǒng)計(jì)方法進(jìn)行下一步操作。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果 p-value=0.029035290703177452,比指定的顯著水平(一般為5%)小,則拒絕假設(shè):x不服從正態(tài)分布。
3. 檢驗(yàn)樣本是否服務(wù)某一分布
(1) 用途
?科爾莫戈羅夫檢驗(yàn)(Kolmogorov-Smirnov test),檢驗(yàn)樣本數(shù)據(jù)是否服從某一分布,僅適用于連續(xù)分布的檢驗(yàn)。下例中用它檢驗(yàn)正態(tài)分布。
(2) 示例
(3) 結(jié)果分析
?生成300個(gè)服從N(0,1)標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù),在使用k-s檢驗(yàn)該數(shù)據(jù)是否服從正態(tài)分布,提出假設(shè):x從正態(tài)分布。最終返回的結(jié)果,p-value=0.9260909172362317,比指定的顯著水平(一般為5%)大,則我們不能拒絕假設(shè):x服從正態(tài)分布。這并不是說x服從正態(tài)分布一定是正確的,而是說沒有充分的證據(jù)證明x不服從正態(tài)分布。因此我們的假設(shè)被接受,認(rèn)為x服從正態(tài)分布。如果p-value小于我們指定的顯著性水平,則我們可以肯定地拒絕提出的假設(shè),認(rèn)為x肯定不服從正態(tài)分布,這個(gè)拒絕是絕對(duì)正確的。
4.方差齊性檢驗(yàn)
(1) 用途
?方差反映了一組數(shù)據(jù)與其平均值的偏離程度,方差齊性檢驗(yàn)用以檢驗(yàn)兩組或多組數(shù)據(jù)與其平均值偏離程度是否存在差異,也是很多檢驗(yàn)和算法的先決條件。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果 p-value=0.19337536323599344, 比指定的顯著水平(假設(shè)為5%)大,認(rèn)為兩組數(shù)據(jù)具有方差齊性。
5. 圖形描述相關(guān)性
(1) 用途
?最常用的兩變量相關(guān)性分析,是用作圖描述相關(guān)性,圖的橫軸是一個(gè)變量,縱軸是另一變量,畫散點(diǎn)圖,從圖中可以直觀地看到相關(guān)性的方向和強(qiáng)弱,線性正相關(guān)一般形成由左下到右上的圖形;負(fù)面相關(guān)則是從左上到右下的圖形,還有一些非線性相關(guān)也能從圖中觀察到。
(2) 示例
(3) 結(jié)果分析
?從圖中可以看到明顯的正相關(guān)趨勢(shì)。
6. 正態(tài)資料的相關(guān)分析
(1) 用途
?皮爾森相關(guān)系數(shù)(Pearson correlation coefficient)是反應(yīng)兩變量之間線性相關(guān)程度的統(tǒng)計(jì)量,用它來分析正態(tài)分布的兩個(gè)連續(xù)型變量之間的相關(guān)性。常用于分析自變量之間,以及自變量和因變量之間的相關(guān)性。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果的第一個(gè)值為相關(guān)系數(shù)表示線性相關(guān)程度,其取值范圍在[-1,1],絕對(duì)值越接近1,說明兩個(gè)變量的相關(guān)性越強(qiáng),絕對(duì)值越接近0說明兩個(gè)變量的相關(guān)性越差。當(dāng)兩個(gè)變量完全不相關(guān)時(shí)相關(guān)系數(shù)為0。第二個(gè)值為p-value,統(tǒng)計(jì)學(xué)上,一般當(dāng)p-value0.05時(shí),可以認(rèn)為兩變量存在相關(guān)性。
7. 非正態(tài)資料的相關(guān)分析
(1) 用途
?斯皮爾曼等級(jí)相關(guān)系數(shù)(Spearman’s correlation coefficient for ranked data ),它主要用于評(píng)價(jià)順序變量間的線性相關(guān)關(guān)系,在計(jì)算過程中,只考慮變量值的順序(rank, 值或稱等級(jí)),而不考慮變量值的大小。常用于計(jì)算類型變量的相關(guān)性。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果的第一個(gè)值為相關(guān)系數(shù)表示線性相關(guān)程度,本例中correlation趨近于1表示正相關(guān)。第二個(gè)值為p-value,p-value越小,表示相關(guān)程度越顯著。
8. 單樣本T檢驗(yàn)
(1) 用途
?單樣本T檢驗(yàn),用于檢驗(yàn)數(shù)據(jù)是否來自一致均值的總體,T檢驗(yàn)主要是以均值為核心的檢驗(yàn)。注意以下幾種T檢驗(yàn)都是雙側(cè)T檢驗(yàn)。
(2) 示例
(3) 結(jié)果分析
?本例中生成了2列100行的數(shù)組,ttest_1samp的第二個(gè)參數(shù)是分別對(duì)兩列估計(jì)的均值,p-value返回結(jié)果,第一列1.47820719e-06比指定的顯著水平(一般為5%)小,認(rèn)為差異顯著,拒絕假設(shè);第二列2.83088106e-01大于指定顯著水平,不能拒絕假設(shè):服從正態(tài)分布。
9. 兩獨(dú)立樣本T檢驗(yàn)
(1) 用途
?由于比較兩組數(shù)據(jù)是否來自于同一正態(tài)分布的總體。注意:如果要比較的兩組數(shù)據(jù)不滿足方差齊性, 需要在ttest_ind()函數(shù)中添加參數(shù)equal_var = False。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果的第一個(gè)值為統(tǒng)計(jì)量,第二個(gè)值為p-value,pvalue=0.19313343989106416,比指定的顯著水平(一般為5%)大,不能拒絕假設(shè),兩組數(shù)據(jù)來自于同一總結(jié),兩組數(shù)據(jù)之間無差異。
10. 配對(duì)樣本T檢驗(yàn)
(1) 用途
?配對(duì)樣本T檢驗(yàn)可視為單樣本T檢驗(yàn)的擴(kuò)展,檢驗(yàn)的對(duì)象由一群來自正態(tài)分布獨(dú)立樣本更改為二群配對(duì)樣本觀測(cè)值之差。它常用于比較同一受試對(duì)象處理的前后差異,或者按照某一條件進(jìn)行兩兩配對(duì)分別給與不同處理的受試對(duì)象之間是否存在差異。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果的第一個(gè)值為統(tǒng)計(jì)量,第二個(gè)值為p-value,pvalue=0.80964043445811551,比指定的顯著水平(一般為5%)大,不能拒絕假設(shè)。
11. 單因素方差分析
(1) 用途
?方差分析(Analysis of Variance,簡(jiǎn)稱ANOVA),又稱F檢驗(yàn),用于兩個(gè)及兩個(gè)以上樣本均數(shù)差別的顯著性檢驗(yàn)。方差分析主要是考慮各組之間的平均數(shù)差別。
?單因素方差分析(One-wayAnova),是檢驗(yàn)由單一因素影響的多組樣本某因變量的均值是否有顯著差異。
?當(dāng)因變量Y是數(shù)值型,自變量X是分類值,通常的做法是按X的類別把實(shí)例成分幾組,分析Y值在X的不同分組中是否存在差異。
(2) 示例
(3) 結(jié)果分析
?返回結(jié)果的第一個(gè)值為統(tǒng)計(jì)量,它由組間差異除以組間差異得到,上例中組間差異很大,第二個(gè)返回值p-value=6.2231520821576832e-19小于邊界值(一般為0.05),拒絕原假設(shè), 即認(rèn)為以上三組數(shù)據(jù)存在統(tǒng)計(jì)學(xué)差異,并不能判斷是哪兩組之間存在差異 。只有兩組數(shù)據(jù)時(shí),效果同 stats.levene 一樣。
12. 多因素方差分析
(1) 用途
?當(dāng)有兩個(gè)或者兩個(gè)以上自變量對(duì)因變量產(chǎn)生影響時(shí),可以用多因素方差分析的方法來進(jìn)行分析。它不僅要考慮每個(gè)因素的主效應(yīng),還要考慮因素之間的交互效應(yīng)。
(2) 示例
(3) 結(jié)果分析
?上述程序定義了公式,公式中,"~"用于隔離因變量和自變量,”+“用于分隔各個(gè)自變量, ":"表示兩個(gè)自變量交互影響。從返回結(jié)果的P值可以看出,X1和X2的值組間差異不大,而組合后的T:G的組間有明顯差異。
13. 卡方檢驗(yàn)
(1) 用途
?上面介紹的T檢驗(yàn)是參數(shù)檢驗(yàn),卡方檢驗(yàn)是一種非參數(shù)檢驗(yàn)方法。相對(duì)來說,非參數(shù)檢驗(yàn)對(duì)數(shù)據(jù)分布的要求比較寬松,并且也不要求太大數(shù)據(jù)量。卡方檢驗(yàn)是一種對(duì)計(jì)數(shù)資料的假設(shè)檢驗(yàn)方法,主要是比較理論頻數(shù)和實(shí)際頻數(shù)的吻合程度。常用于特征選擇,比如,檢驗(yàn)?zāi)腥撕团嗽谑欠窕加懈哐獕荷嫌袩o區(qū)別,如果有區(qū)別,則說明性別與是否患有高血壓有關(guān),在后續(xù)分析時(shí)就需要把性別這個(gè)分類變量放入模型訓(xùn)練。
?基本數(shù)據(jù)有R行C列, 故通稱RC列聯(lián)表(contingency table), 簡(jiǎn)稱RC表,它是觀測(cè)數(shù)據(jù)按兩個(gè)或更多屬性(定性變量)分類時(shí)所列出的頻數(shù)表。
(2) 示例
(3) 結(jié)果分析
?卡方檢驗(yàn)函數(shù)的參數(shù)是列聯(lián)表中的頻數(shù),返回結(jié)果第一個(gè)值為統(tǒng)計(jì)量值,第二個(gè)結(jié)果為p-value值,p-value=0.54543425102570975,比指定的顯著水平(一般5%)大,不能拒絕原假設(shè),即相關(guān)性不顯著。第三個(gè)結(jié)果是自由度,第四個(gè)結(jié)果的數(shù)組是列聯(lián)表的期望值分布。
14. 單變量統(tǒng)計(jì)分析
(1) 用途
?單變量統(tǒng)計(jì)描述是數(shù)據(jù)分析中最簡(jiǎn)單的形式,其中被分析的數(shù)據(jù)只包含一個(gè)變量,不處理原因或關(guān)系。單變量分析的主要目的是通過對(duì)數(shù)據(jù)的統(tǒng)計(jì)描述了解當(dāng)前數(shù)據(jù)的基本情況,并找出數(shù)據(jù)的分布模型。
?單變量數(shù)據(jù)統(tǒng)計(jì)描述從集中趨勢(shì)上看,指標(biāo)有:均值,中位數(shù),分位數(shù),眾數(shù);從離散程度上看,指標(biāo)有:極差、四分位數(shù)、方差、標(biāo)準(zhǔn)差、協(xié)方差、變異系數(shù),從分布上看,有偏度,峰度等。需要考慮的還有極大值,極小值(數(shù)值型變量)和頻數(shù),構(gòu)成比(分類或等級(jí)變量)。
?此外,還可以用統(tǒng)計(jì)圖直觀展示數(shù)據(jù)分布特征,如:柱狀圖、正方圖、箱式圖、頻率多邊形和餅狀圖。
15. 多元線性回歸
(1) 用途
?多元線性回歸模型(multivariable linear regression model ),因變量Y(計(jì)量資料)往往受到多個(gè)變量X的影響,多元線性回歸模型用于計(jì)算各個(gè)自變量對(duì)因變量的影響程度,可以認(rèn)為是對(duì)多維空間中的點(diǎn)做線性擬合。
(2) 示例
(3) 結(jié)果分析
?直接通過返回結(jié)果中各變量的P值與0.05比較,來判定對(duì)應(yīng)的解釋變量的顯著性,P0.05則認(rèn)為自變量具有統(tǒng)計(jì)學(xué)意義,從上例中可以看到收入INCOME最有顯著性。
16. 邏輯回歸
(1) 用途
?當(dāng)因變量Y為2分類變量(或多分類變量時(shí))可以用相應(yīng)的logistic回歸分析各個(gè)自變量對(duì)因變量的影響程度。
(2) 示例
(3) 結(jié)果分析
?直接通過返回結(jié)果中各變量的P值與0.05比較,來判定對(duì)應(yīng)的解釋變量的顯著性,P0.05則認(rèn)為自變量具有統(tǒng)計(jì)學(xué)意義。
假設(shè)兩個(gè)數(shù)帶進(jìn)去替換x和n就好理解了,比如power(2,3)計(jì)算2的3次方
按照代碼
s=1 n0(我們假設(shè)了n為3)
然后執(zhí)行while n0 里的n=n-1 n變成2
再執(zhí)行s(這個(gè)是新的s)=s(這個(gè)是舊的s)*x 新s變?yōu)?(我們上面假設(shè)x為2)
然后返回s(下次使用時(shí)就變成了舊s)
接著判斷n,依舊大于0 ,執(zhí)行n=n-1 n變成1 執(zhí)行s=s*x 新s變?yōu)?,然后返回s
接著判斷n,依舊大于0,執(zhí)行n=n-1 n變成0(意味著這次結(jié)束就將跳出循環(huán))執(zhí)行s=s*x
新s變成8
循環(huán)結(jié)束,得到結(jié)果。2的3次方是8
不知道還有什么地方不明白
python分治法求二維數(shù)組局部峰值方法
下面小編就為大家分享一篇python分治法求二維數(shù)組局部峰值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
題目的意思大致是在一個(gè)n*m的二維數(shù)組中,找到一個(gè)局部峰值。峰值要求大于相鄰的四個(gè)元素(數(shù)組邊界以外視為負(fù)無窮),比如最后我們找到峰值A(chǔ)[j][i],則有A[j][i] A[j+1][i] A[j][i] A[j-1][i] A[j][i] A[j][i+1] A[j][i] A[j][i-1]。返回該峰值的坐標(biāo)和值。
當(dāng)然,最簡(jiǎn)單直接的方法就是遍歷所有數(shù)組元素,判斷是否為峰值,時(shí)間復(fù)雜度為O(n^2)
再優(yōu)化一點(diǎn)求每一行(列)的最大值,再通過二分法找最大值列的峰值(具體方法可見一維數(shù)組求峰值),這種算法時(shí)間復(fù)雜度為O(logn)
這里討論的是一種復(fù)雜度為O(n)的算法,算法思路分為以下幾步:
1、找“田”字。包括外圍的四條邊和中間橫豎兩條邊(圖中綠色部分),比較其大小,找到最大值的位置。(圖中的7)
2、找到田字中最大值后,判斷它是不是局部峰值,如果是返回該坐標(biāo),如果不是,記錄找到相鄰四個(gè)點(diǎn)中最大值坐標(biāo)。通過該坐標(biāo)所在的象限縮小范圍,繼續(xù)比較下一個(gè)田字
3、當(dāng)范圍縮小到3*3時(shí)必定會(huì)找到局部峰值(也可能之前就找到了)
關(guān)于為什么我們選擇的范圍內(nèi)一定存在峰值,大家可以這樣想,首先我們有一個(gè)圈,我們已知有圈內(nèi)至少有一個(gè)元素大于這個(gè)圈所有的元素,那么,是不是這個(gè)圈中一定有一個(gè)最大值?
可能說得有點(diǎn)繞,但是多想想應(yīng)該能夠理解,也可以用數(shù)學(xué)的反證法來證明。
算法我們理解后接下來就是代碼實(shí)現(xiàn)了,這里我用的語(yǔ)言是python(初學(xué)python,可能有些用法上不夠簡(jiǎn)潔請(qǐng)見諒),先上代碼:
import numpy as np
def max_sit(*n): #返回最大元素的位置
temp = 0
sit = 0
for i in range(len(n)):
if(n[i]temp):
temp = n[i]
sit = i
return sit
def dp(s1,s2,e1,e2):
m1 = int((e1-s1)/2)+s1 #row
m2 = int((e2-s1)/2)+s2 #col
nub = e1-s1
temp = 0
sit_row = 0
sit_col = 0
for i in range(nub):
t = max_sit(list[s1][s2+i], #第一排
list[m1][s2+i], #中間排
list[e1][s2+i], #最后排
list[s1+i][s2], #第一列
list[s1+i][m2], #中間列
list[s1+i][e2], #最后列
temp)
if(t==6):
pass
elif(t==0):
temp = list[s1][s2+i]
sit_row = s1
sit_col = s2+i
elif(t==1):
temp = list[m1][s2+i]
sit_row = m1
sit_col = s2+i
elif(t==2):
temp = list[e1][s2+i]
sit_row = e1
sit_col = s2+i
elif(t==3):
temp = list[s1+i][s2]
sit_row = s1+i
sit_row = s2
elif(t==4):
temp = list[s1+i][m2]
sit_row = s1+i
sit_col = m2
elif(t==5):
temp = list[s1+i][e2]
sit_row = s1+i
sit_col = m2
t = max_sit(list[sit_row][sit_col], #中
list[sit_row-1][sit_col], #上
list[sit_row+1][sit_col], #下
list[sit_row][sit_col-1], #左
list[sit_row][sit_col+1]) #右
if(t==0):
return [sit_row-1,sit_col-1]
elif(t==1):
sit_row-=1
elif(t==2):
sit_row+=1
elif(t==3):
sit_col-=1
elif(t==4):
sit_col+=1
if(sit_rowm1):
e1 = m1
else:
s1 = m1
if(sit_colm2):
e2 = m2
else:
s2 = m2
return dp(s1,s2,e1,e2)
f = open("demo.txt","r")
list = f.read()
list = list.split("n") #對(duì)行進(jìn)行切片
list = ["0 "*len(list)]+list+["0 "*len(list)] #加上下的圍墻
for i in range(len(list)): #對(duì)列進(jìn)行切片
list[i] = list[i].split()
list[i] = ["0"]+list[i]+["0"] #加左右的圍墻
list = np.array(list).astype(np.int32)
row_n = len(list)
col_n = len(list[0])
ans_sit = dp(0,0,row_n-1,col_n-1)
print("找到峰值點(diǎn)位于:",ans_sit)
print("該峰值點(diǎn)大小為:",list[ans_sit[0]+1,ans_sit[1]+1])
f.close()
首先我的輸入寫在txt文本文件里,通過字符串轉(zhuǎn)換變?yōu)槎S數(shù)組,具體轉(zhuǎn)換過程可以看我上一篇博客——python中字符串轉(zhuǎn)換為二維數(shù)組。(需要注意的是如果在windows環(huán)境中split后的列表沒有空尾巴,所以不用加list.pop()這句話)。有的變動(dòng)是我在二維數(shù)組四周加了“0”的圍墻。加圍墻可以再我們判斷峰值的時(shí)候不用考慮邊界問題。
max_sit(*n)函數(shù)用于找到多個(gè)值中最大值的位置,返回其位置,python的內(nèi)構(gòu)的max函數(shù)只能返回最大值,所以還是需要自己寫,*n表示不定長(zhǎng)參數(shù),因?yàn)槲倚枰诒容^田和十(判斷峰值)都用到這個(gè)函數(shù)
def max_sit(*n): #返回最大元素的位置
temp = 0
sit = 0
for i in range(len(n)):
if(n[i]temp):
temp = n[i]
sit = i
return sit
dp(s1,s2,e1,e2)函數(shù)中四個(gè)參數(shù)的分別可看為startx,starty,endx,endy。即我們查找范圍左上角和右下角的坐標(biāo)值。
m1,m2分別是row 和col的中間值,也就是田字的中間。
def dp(s1,s2,e1,e2):
m1 = int((e1-s1)/2)+s1 #row
m2 = int((e2-s1)/2)+s2 #col
依次比較3行3列中的值找到最大值,注意這里要求二維數(shù)組為正方形,如果為矩形需要做調(diào)整
for i in range(nub):
t = max_sit(list[s1][s2+i], #第一排
list[m1][s2+i], #中間排
list[e1][s2+i], #最后排
list[s1+i][s2], #第一列
list[s1+i][m2], #中間列
list[s1+i][e2], #最后列
temp)
if(t==6):
pass
elif(t==0):
temp = list[s1][s2+i]
sit_row = s1
sit_col = s2+i
elif(t==1):
temp = list[m1][s2+i]
sit_row = m1
sit_col = s2+i
elif(t==2):
temp = list[e1][s2+i]
sit_row = e1
sit_col = s2+i
elif(t==3):
temp = list[s1+i][s2]
sit_row = s1+i
sit_row = s2
elif(t==4):
temp = list[s1+i][m2]
sit_row = s1+i
sit_row = m2
elif(t==5):
temp = list[s1+i][e2]
sit_row = s1+i
sit_row = m2
判斷田字中最大值是不是峰值,并找不出相鄰最大值
t = max_sit(list[sit_row][sit_col], #中
list[sit_row-1][sit_col], #上
list[sit_row+1][sit_col], #下
list[sit_row][sit_col-1], #左
list[sit_row][sit_col+1]) #右
if(t==0):
return [sit_row-1,sit_col-1]
elif(t==1):
sit_row-=1
elif(t==2):
sit_row+=1
elif(t==3):
sit_col-=1
elif(t==4):
sit_col+=1
縮小范圍,遞歸求解
if(sit_rowm1):
e1 = m1
else:
s1 = m1
if(sit_colm2):
e2 = m2
else:
s2 = m2
return dp(s1,s2,e1,e2)
好了,到這里代碼基本分析完了。如果還有不清楚的地方歡迎下方留言。
除了這種算法外,我也寫一種貪心算法來求解這道題,只可惜最壞的情況下算法復(fù)雜度還是O(n^2),QAQ。
大體的思路就是從中間位置起找相鄰4個(gè)點(diǎn)中最大的點(diǎn),繼續(xù)把該點(diǎn)來找相鄰最大點(diǎn),最后一定會(huì)找到一個(gè)峰值點(diǎn),有興趣的可以看一下,上代碼:
#!/usr/bin/python3
def dp(n):
temp = (str[n],str[n-9],str[n-1],str[n+1],str[n+9]) #中 上 左 右 下
sit = temp.index(max(temp))
if(sit==0):
return str[n]
elif(sit==1):
return dp(n-9)
elif(sit==2):
return dp(n-1)
elif(sit==3):
return dp(n+1)
else:
return dp(n+9)
f = open("/home/nancy/桌面/demo.txt","r")
list = f.read()
list = list.replace(" ","").split() #轉(zhuǎn)換為列表
row = len(list)
col = len(list[0])
str="0"*(col+3)
for x in list: #加圍墻 二維變一維
str+=x+"00"
str+="0"*(col+1)
mid = int(len(str)/2)
print(str,mid)
p = dp(mid)
print (p)
f.close()
以上這篇python分治法求二維數(shù)組局部峰值方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考
峰值就是一堆數(shù)值中的最大值或者最小值吧,你可以使用max和min函數(shù)。
l=[1,4,5,6,74,23,2,1,5,7]
print max(l)
print min(l)
文章題目:python多峰函數(shù) Python 峰
轉(zhuǎn)載來源:http://chinadenli.net/article4/hjihie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、App設(shè)計(jì)、網(wǎng)站收錄、虛擬主機(jī)、面包屑導(dǎo)航、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)