這返回一個元組列表,顯示哪個學生和哪個科目的成績比平均值低5%以上。
avg = df.loc['StudentAvg', :]
i, j = np.where(((df/avg) - 1) < -.05)
list(zip(df.index[i], df.columns[j]))
[('StudentB', 'ART'),
('StudentC', 'ENGLISH'),
('StudentC', 'ART'),
('StudentD', 'ART'),
('StudentE', 'ART')]
我們能不更加清晰之前,我加快了一下有
p = df.index.get_loc('StudentAvg')
v = df.values
i, j = np.where(((v/v[p]) - 1) < -.05)
list(zip(df.index[i], df.columns[j]))
[('StudentB', 'ART'),
('StudentC', 'ENGLISH'),
('StudentC', 'ART'),
('StudentD', 'ART'),
('StudentE', 'ART')]
定時
%%timeit
p = df.index.get_loc('StudentAvg')
v = df.values
i, j = np.where(((v/v[p]) - 1) < -.05)
list(zip(df.index[i], df.columns[j]))
10000 loops, best of 3: 41.7 µs per loop
%%timeit
avg = df.loc['StudentAvg', :]
i, j = np.where(((df/avg) - 1) < -.05)
list(zip(df.index[i], df.columns[j]))\
1000 loops, best of 3: 662 µs per loop
你是否告訴我分別計算了417秒和662秒?或者你的意思是你做了10000次迭代,而那些是最好的平均值? –
@NishantRoy不! 41.7微秒和662微秒 – piRSquared
41.7微秒爲整個代碼塊運行,對不對?或者你是說每循環多少時間,代碼塊需要10,000個循環。 –