我想为数据帧的每一行计算范数(即向量的欧几里得距离长度(。我知道像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])