問題陳述:顯示最大百分比變化和它發生的年份。陣列如下所示:
import numpy as np
array = np.array([[2010,2011,2012,2013,2014,2015,2016,2017,2018,2019],
[1996,2165,2342,2511,2829,3052,3299,3523,3741,3864]])
所以到目前為止我已經嘗試過:
compare = np.roll(array,1)
pcdiff = (compare - pcdiff)/compare))
有人可以幫忙嗎謝謝!
uj5u.com熱心網友回復:
那是你要找的嗎?
import numpy as np
array = np.array([[2010,2011,2012,2013,2014,2015,2016,2017,2018,2019],
[1996,2165,2342,2511,2829,3052,3299,3523,3741,3864]])
values = array[1]
perc_change = [round((values[i]-values[i-1])*100/values[i-1], 2) for i in range(1, len(values))]
max_perc = max(perc_change)
print(max_perc, array[0][perc_change.index(max_perc) 1])
輸出:
12.66 2014
uj5u.com熱心網友回復:
IIUC,計算差異,除以原始資料并獲得索引argmax(將移動1作為diff洗掉一個值):
idx = np.argmax(np.diff(array[1])/array[1, :-1]) 1
array[:, idx]
輸出:
array([2014, 2829])
或者,如果您想要百分比變化:
pct_change = np.diff(array[1])/array[1, :-1]
idx = np.argmax(pct_change)
out = (pct_change[idx], array[0, idx 1])
輸出:
(0.12664277180406214, 2014)
uj5u.com熱心網友回復:
d=dict(zip(array[0],array[1])) # a dictionary with values and years
l=list(d.values()) # a list with values
m=max(((l[x 1]-l[x])/l[x],x) for x in range(len(l)-1))
print(m) #(0.12664277180406214, 3)
position=m[1]
print(m[0],list(d.keys())[position 1])
#output
0.12664277180406214 2014
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485477.html
