与单元素元组混淆

时间:2014-03-28 09:04:55

标签: python

这里的代码我试图找到股票价格的相对最大值和最小值,并用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 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]

1 个答案:

答案 0 :(得分: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)