如果您只是想更快地执行此操作,而不是专门使用cython,那么我将以纯numpy的方式执行(大约快50倍)。
def numpy_foo(arr): vals = {i: (arr[i, :] + arr[i:, :]).sum(axis=1).tolist() for i in range(arr.shape[0])} return vals%timeit foo(df)100 loops, best of 3: 7.2 ms per loop%timeit numpy_foo(df.values)10000 loops, best of 3: 144 µs per loopfoo(df) == numpy_foo(df.values)Out[586]: True一般而言,与numpy相比,大熊猫为您提供了许多便利,但存在间接费用。因此,在熊猫没有真正添加任何东西的情况下,通常可以通过以numpy的方式来加快速度。再举一个例子,请看我问的这个问题,它显示出大致可比的速度差异(大约23倍)。



