pandas 数据框中所有列的范数

norm for all columns in a pandas datafrme

使用这样的数据框:

index  col_1   col_2   ...   col_n
0      0.2     0.1           0.3
1      0.2     0.1           0.3
2      0.2     0.1           0.3
...
n      0.4     0.7           0.1


如何获得每一列的范数? 其中范数是平方和的平方根。

我可以按顺序为每一列执行此操作,但我不确定如何对答案进行相同的向量化(避免 for 循环):

import pandas as pd
import numpy as np


norm_col_1 = np.linalg.norm(df[col_1])
norm_col_2 = np.linalg.norm(df[col_2])

norm_col_n = np.linalg.norm(df[col_n])

答案将是一个像这样的新数据框系列:

        norms
col_1   0.111
col_2   0.202
col_3   0.55
...
con_n   0.100

您可以将整个 DataFrame 传递给 np.linalg.norm,连同一个 axis 参数 0 告诉它应用它 column-wise:

np.linalg.norm(df, axis=0)

要创建具有适当列名的系列,请尝试:

results = pd.Series(data=np.linalg.norm(df, axis=0), index=df.columns)