Python 数据帧向量范数高效



我想为数据帧的每一行计算范数(即向量的欧几里得距离长度(。我知道像mean()sum()这样的功能存在,但没有norm()。所以我尝试自己通过做来实现它

df.apply(lambda values: math.sqrt(sum([v**2 for v in values])), axis=1)

但与例如 sum 函数相比,这真的很慢。是否有简单(且快速(的熊猫实现?

当然,在这里使用numpy

In [1]: import pandas as pd, numpy as np
In [2]: df = pd.DataFrame(data=[[1,2,3],[4,5,6]], columns=['a','b','c'])
In [3]: np.linalg.norm(df, axis=1)
Out[3]: array([3.74165739, 8.77496439])

最新更新