Python 如何计算相似矩阵的均值和标准差?

Python 如何计算相似矩阵的均值和标准差?,python,pandas,numpy,dataframe,similarity,Python,Pandas,Numpy,Dataframe,Similarity,我正在处理CSV文件,我有一个计算文档之间相似性的代码。Post提供的代码和详细数据及输出如下: data.csv如下所示: idx messages 112 I have a car and it is blue 114 I have a bike and it is red 115 I don't have any car 117 I don't have any bike 输出为: id 112 114 115 117 i

我正在处理CSV文件,我有一个计算文档之间相似性的代码。Post提供的代码和详细数据及输出如下:

data.csv如下所示:

idx         messages
112  I have a car and it is blue
114  I have a bike and it is red
115  I don't have any car
117  I don't have any bike
输出为:

    id     112    114    115    117
    id                             
    112  100.0   78.0   51.0   50.0
    114   78.0  100.0   47.0   54.0
    115   51.0   47.0  100.0   83.0
    117   50.0   54.0   83.0  100.0
现在我想计算相似矩阵下三角的平均值和标准偏差(因为上三角和下三角是相似的),而不需要身份数据(100.0)

我尝试使用panda内置的平均值和std作为:

df_std = df.std()
df_Mean = df.mean()
但这考虑了输出中的所有数据,如恒等式和上三角


我想知道是否有任何方法可以像我提到的那样计算平均值和标准偏差

使用
numpy.tril
k=-1
并使0s
np.nan

import numpy as np

ltri = np.tril(df.values, -1)
ltri = ltri[np.nonzero(ltri)]
ltri.std(), ltri.mean()
# (14.361406616345072, 60.5)
输出:

array([[ 0.,  0.,  0.,  0.],
       [78.,  0.,  0.,  0.],
       [51., 47.,  0.,  0.],
       [50., 54., 83.,  0.]])
现在您可以执行
ltri.std()
ltri.mean()


您可以将所有不需要的值屏蔽为
np.nan

df.values[np.triu_indices_from(df.values,0)]=np.nan
df.mean()
112    59.666667
114    50.500000
115    83.000000
117          NaN
dtype: float64
df.std()
112    15.885003
114     4.949747
115          NaN
117          NaN
dtype: float64

在屏蔽值之后

df
      112   114   115  117
112   NaN   NaN   NaN  NaN
114  78.0   NaN   NaN  NaN
115  51.0  47.0   NaN  NaN
117  50.0  54.0  83.0  NaN

你的期望是什么output@ALollz啊,忘了加非零。让我更新一下;)谢谢你的评论和代码。我会提前感谢你的。我还有一个问题。现在代码准备好了一个CSV文件,并在每个idx之间执行相似性。我如何在两个不同的文档之间执行相同的相似性?@Bilgin更新了关于零的信息。对于你评论中的问题,我建议你要么编辑当前问题,要么发布另一个问题(推荐),并附上一些例子:)谢谢你的评论。如何计算三角形的整个上均值或下均值。它是否像一个例子``df.mean(df.mean())````?