这里的代码我试图找到股票价格的相对最大值和最小值,并用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]
答案 0 :(得分:0)
argrelextrema
返回单个元素元组,以便以下mxx
和mxy
语句有效。这些是list comprehensions
声明
mxx=[stock.index[i] for i in mx]
返回一个列表,该列表可以通过以下等效代码
创建mxx = []
for i in mx:
value = stock.index[i]
mxx.append(value)