Pandas 将一个Panda矩阵部分乘以另一个
我想从两个熊猫矩阵创建一个新的熊猫矩阵 如果没有一个例子,我不知道如何准确地描述我的问题 那么,我的矩阵A:Pandas 将一个Panda矩阵部分乘以另一个,pandas,matrix,Pandas,Matrix,我想从两个熊猫矩阵创建一个新的熊猫矩阵 如果没有一个例子,我不知道如何准确地描述我的问题 那么,我的矩阵A: 1 2 3 4 5 1 0.821124 0.767681 0.639456 0.131096 0.398733 2 0.108253 0.865229 0.285755 0.409036 0.398622 3 0.529245 0.9
1 2 3 4 5
1 0.821124 0.767681 0.639456 0.131096 0.398733
2 0.108253 0.865229 0.285755 0.409036 0.398622
3 0.529245 0.989824 0.283102 0.392597 0.983236
4 0.699661 0.828631 0.404465 0.027329 0.936447
5 0.983737 0.262978 0.387633 2.228383 0.677531
我的矩阵B:
A B
a b a b
A a 0.090075 0.550466 0.748526 0.338671
b 0.577898 0.005927 0.718440 0.482596
B a 0.042174 0.332807 0.214504 0.781927
b 0.819624 0.066917 0.372023 0.459321
我想得到一个矩阵C:
A B
a b a b
1 2 3 4 5 2 3 4
A a 1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
b 3 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN
B a 5 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
b 3 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN
并填写每个单元格的排序
C((A,b,3)(A,a,1))= A((3)(1))*B((A,b)(A,a))
这里,(A,b,2)是行,(A,A,1)是列。例如:
C((A,b,3)(A,a,1)) = 0.529245 * 0.577898.
C((B,b,4)(A,a,2)) = 0.828631 * 0.819624
我成功地用Panda的循环和C.loc构建了这个C矩阵。但是它非常慢。我的矩阵A约为2000*10000,矩阵B约为4000*4000,矩阵C约为400000*400000(与本例相比,还有一个级别)
看起来我用A乘以B来表示每一秒的C,但是这里A和C的索引并不总是匹配的
我怎样才能在不掉头发的情况下处理这件事。
提前谢谢
我现在优化我的演算的唯一方法是用MPI将我的作品除以核心。但是它仍然很慢。你能分享关于如何设置NaN填充的代码吗
C
?我通过对RDF数据库的查询创建了我的索引。所以很难共享代码。但是我可以很容易地用C的适当索引获得dict,我通过以下命令生成矩阵:import pandas as pd
index=pd.MultiIndex.from_元组({('A','1'),('A','2'),('B','1'),('B','2'))
pd.DataFrame(index=index,columns=index)
你能分享关于如何设置NaN填充的代码吗C
?我通过对RDF数据库的查询创建了索引。所以很难共享代码。但是我可以很容易地用C的适当索引获得dict,我通过以下命令生成矩阵:import pandas as pd
index=pd.MultiIndex.from_元组({('A','1'),('A','2'),('B','1'),('B','2'))
pd.DataFrame(index=index,columns=index)