将熊猫矩阵部分地乘以另一个

时间:2017-04-28 15:36:20

标签: 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.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

我成功构建了带有循环的C矩阵和来自Panda的C.loc。但它很慢。我的矩阵A大约是2000 * 10 000,我的矩阵B 4000 * 4000,我的矩阵C大约是400 000 * 400 000(如果我们比较这个例子还有一个级别)。

对于C的每个第二级,看起来我将A乘以B,但是这里A和C的索引总是匹配。

如何在不丢失头发的情况下解决问题。 提前谢谢。

我现在唯一可以优化我的微积分的方法是将我的作品与MPI分开。但它仍然很慢。

0 个答案:

没有答案