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)
使用这样的数据框:
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)