2014-03-28 81 views
0

這裏的代碼如下困惑我試圖找到股價的相對最大值和最小值做圖與matplotlib單元素元組

stockewma=pd.ewma(stock,span=3) 
stocka=np.array(stockewma.values) 
mx=argrelextrema(stocka,np.greater) 
mn=argrelextrema(stocka,np.less) 
mxx=[stock.index[i] for i in mx] 
mxy=[stock.ix[i] for i in mx] 
mnx=[stock.index[i] for i in mn] 
mny=[stock.ix[i] for i in mn] 

代碼工作好了,但後來我發現了argrelextrema實際返回SINGLE列表的SINGLE np.array的元組。

爲什麼它應該將數據包裝得如此笨拙?

因爲我必須使用mx [0]訪問索引值#cuz它是一個元素元組。

我不明白爲什麼下面的代碼可以工作,索引與嵌套單個列表的數組?

mxx=[stock.index[i] for i in mx] 
mxy=[stock.ix[i] for i in mx] 
mnx=[stock.index[i] for i in mn] 
mny=[stock.ix[i] for i in mn] 

回答

0

argrelextrema返回單個元素的元組,使下面的mxxmxy報表工作。這些都是list comprehensions

聲明

mxx=[stock.index[i] for i in mx] 

返回這可以通過下面的等效代碼

mxx = [] 
for i in mx: 
    value = stock.index[i] 
    mxx.append(value) 
+0

TKS創建一個列表!然而,爲什麼不簡單地返回一個列表或一個數組,而是一個單一的元素列表與嵌套列表數組? – timeislove