我有这样的数据帧:
df:
A B C D
#1 1 0 1 1
#2 0 0 1 1
#3 0 1 0 1
这可以理解为:在A,C和D中观察到#1事件,在C中观察到#2事件,在B,D中观察到#3事件 现在我想把这些数据解析为A,B,C,D之间的相关矩阵,如下所示:
A B C D
A 1 0 1 1
B 0 1 0 1
C 1 0 2 2
D 1 1 2 3
这可以理解为:A和B中都发生了0个事件,A和C中都发生了1个事件,依此类推
我可以用这个策略做到:
# input is df
correltation_matrix = pd.DataFrame(np.nan([4,4])
correltation_matrix[0, :] = df[['B', 'C', 'D']]*df['A'].sum()
然后对整个数据帧进行循环,但是如果变量的数量很高,那么它似乎是无效的。如何改进我的方法
可以通过计算矩阵点积来实现这一点
其中
(df.T)
是df
转置的为了补充@ferhen的答案,我想补充一点,使用正确配置的Tensorflow,您可以显著优于
np.dot
。对于df.shape == (1000, 2000)
,我得到了以下计时(在谷歌Colab的免费层上)相关问题 更多 >
编程相关推荐