我有一個資料集,它要求我列印出大于平均年份的值。我能夠檢索資料,但不能與年份一起檢索。有什么有效的方法可以用來同時顯示兩個資料嗎?下面是資料集的片段,分別包含年份和資料。
[2010,2011,2012,2013,2014,2015,2016,2017]
[29057,30979,31746,32964,31738,31010,31158,28736]
有人可以為此提出一個方法嗎!欣賞,加油!
uj5u.com熱心網友回復:
由于這個問題沒有得到真正的解釋,我不確定這就是你除了:
date = [2010,2011,2012,2013,2014,2015,2016,2017]
data = [29057,30979,31746,32964,31738,31010,31158,28736]
date_mean = np.mean(date)
for i,year in enumerate(date):
if year > date_mean:
print(year, data[i])
它列印以下內容:
2014 31738
2015 31010
2016 31158
2017 28736
uj5u.com熱心網友回復:
使用 numpy:
years = np.array([2010,2011,2012,2013,2014,2015,2016,2017])
data = np.array([29057,30979,31746,32964,31738,31010,31158,28736])
out = np.stack([years, data])[:, data>data.mean()]
輸出:
array([[ 2011, 2012, 2013, 2014, 2015, 2016],
[30979, 31746, 32964, 31738, 31010, 31158]])
uj5u.com熱心網友回復:
要將您的兩個串列組合在一起,您可以使用zip。
例子:
years = [2010,2011,2012,2013,2014,2015,2016,2017]
values = [29057,30979,31746,32964,31738,31010,31158,28736]
pair = list(zip(years, values))
輸出:
>>> pair
[(2010, 29057), (2011, 30979), (2012, 31746), (2013, 32964), (2014, 31738), (2015, 31010), (2016, 31158), (2017, 28736)]
要獲得高于平均值的值,您可以使用以下代碼段:
above_mean = [i for i in pair if i[1] > sum(values)/len(values)]
輸出:
>>> above_mean
[(2011, 30979), (2012, 31746), (2013, 32964), (2014, 31738), (2015, 31010), (2016, 31158)]
uj5u.com熱心網友回復:
您可以在陣列中選擇帶有條件的日期并使用.index() 獲取相應的 x
date = [2010,2011,2012,2013,2014,2015,2016,2017]
x = [29057,30979,31746,32964,31738,31010,31158,28736]
year = [d for d in date if d >= (np.mean(date))]
for d in year:
print(d, x[date.index(d)])
>>>2014 31738
2015 31010
2016 31158
2017 28736
uj5u.com熱心網友回復:
np.c_[y[x>x.mean()], x[x>x.mean()]]
#output:
array([[ 2011, 30979],
[ 2012, 31746],
[ 2013, 32964],
[ 2014, 31738],
[ 2015, 31010],
[ 2016, 31158]])
x>x.mean()回傳一個布爾掩碼(Trueisx>x.mean()和False其他);我們可以使用這個掩碼來選擇x高于平均值的值x[x>x.mean()]。以同樣的方式,我們可以選擇其中的年份x>x.mean()(y[x>x.mean()]您可以嘗試查看這兩行的輸出)。現在我們有 2 個大小相同的陣列,我們可以將它們堆疊在一起np.c_,以便得到一個包含兩列的矩陣(第一列是年份,第二列是x值)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484206.html
