我在这里和那里回答几个问题.我经常测试我和其他人的解决方案有多快.
是否有一个简单的框架来全面了解各种解决方案的速度有多快?
考虑数据帧 df
df = pd.DataFrame({
'Group': list('QLCKPXNLNTIXAWYMWACA'),
'Value': [29, 52, 71, 51, 45, 76, 68, 60, 92, 95,
99, 27, 77, 54, 39, 23, 84, 37, 99, 87]
})
Run Code Online (Sandbox Code Playgroud)
我想总结Value
按不同值分组的列Group
.我有三种方法可以做到这一点.
import pandas as pd
import numpy as np
from numba import njit
def sum_pd(df):
return df.groupby('Group').Value.sum()
def sum_fc(df):
f, u = pd.factorize(df.Group.values)
v = df.Value.values
return pd.Series(np.bincount(f, weights=v).astype(int), pd.Index(u, name='Group'), name='Value').sort_index()
@njit
def wbcnt(b, w, k):
bins = np.arange(k)
bins = …
Run Code Online (Sandbox Code Playgroud) 我正在使用 np.arrays。我试图删除最后 n 个元素,其中 n 也可以是 1。
n=5
corr=np.full(10,10)
Run Code Online (Sandbox Code Playgroud)
通常我使用这种方法进行数组切片:
corr=corr[:-n]
Run Code Online (Sandbox Code Playgroud)
但我正在考虑使用 np.delete 来提高性能:
np.delete(corr,range(-n,0))
Run Code Online (Sandbox Code Playgroud)
但是不行,有没有比数组切片更好的解决方案?(该方法还能够处理 n=0 的情况,这将是一个优点)