Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅包含np数组的一列上的关联_Python_Pandas_Numpy_Correlation - Fatal编程技术网

Python 仅包含np数组的一列上的关联

Python 仅包含np数组的一列上的关联,python,pandas,numpy,correlation,Python,Pandas,Numpy,Correlation,我使用的是一个数据帧,每行有一列包含一个np.array(在本例中,表示当时大脑记录的平均波形)。我想计算此列的皮尔逊相关性(逐数组) 这是我的密码 lenght = len(df.Mean) Mean = [] for i in range(len(df.Mean)): Mean.append(df.Mean[i]) Correlation_p = np.zeros((lenght,lenght)) P_Value_p = np.zeros((lenght,lenght))

我使用的是一个数据帧,每行有一列包含一个np.array(在本例中,表示当时大脑记录的平均波形)。我想计算此列的皮尔逊相关性(逐数组)

这是我的密码

lenght = len(df.Mean)
Mean = []   
for i in range(len(df.Mean)):
    Mean.append(df.Mean[i])

Correlation_p = np.zeros((lenght,lenght))
P_Value_p = np.zeros((lenght,lenght))

for i in range(lenght):
    for j in range(lenght):
        Correlation_p[i][j],P_Value_p[i][j] = stats.pearsonr(df.Mean[i],df.Mean[j])
这是可行的,但我想知道是否有一种更具python风格的方法,也许可以使用
df.corr()
。我试过了,但在如何做这件事上失败了

编辑:df.Mean.head()的输出


如果我没有弄错的话,您希望关联的数组似乎位于数据帧的单个单元格中。下面介绍了一种格式,其中每个数组占用一列。 我制作了一个类似于df.Mean.head()格式的数据示例:

可以使用以下方法将这些数组转换为列:

df = pd.DataFrame(np.array(df['x'].tolist()).transpose())
根据您自己的尺寸调整重塑参数。 从那以后,事情就相当简单了

相关矩阵可通过以下方式创建:

df.corr()
相关矩阵的可视化:

import matplotlib.pyplot as plt
plt.matshow(df.corr())
plt.show()

有几行的数据示例吗?有。我编辑了这篇文章。嗨,洛伦佐,我对我的答案做了一些更新。如果不让我知道的话,它现在应该可以工作了。是的,它工作得很好。显然比我当时的做法要好。谢谢一件小事:像你一样使用重塑来混合阵列。在您的示例中,它不是为了创建列而转置它们,而是以3的间隔剪切数组,然后将它们一个置于另一个之下。我使用
df=pd.DataFrame(np.array(df['x'].tolist()).transpose())
来替换数组。哎呀,你说得对,我将为未来的用户相应地更改它。
df.corr()
import matplotlib.pyplot as plt
plt.matshow(df.corr())
plt.show()