添加具有不同维度和标签的矩阵

2024-10-01 00:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2D标签矩阵,使用了python的larry包,可能有不同的维度,我需要添加标签对齐的矩阵。larry包处理了这一点,但期望两个矩阵相加的维数相同。在

但是对于我的任务,每个维度都有不同的标签,顺序不同。拉里一边处理,一边补充

例如:

la.add(lar1, lar2, join='inner')

但是期望lar1和lar2的维数相同,但是除了标签的不同顺序之外,我的矩阵甚至可能有不同的维数。在

我想要的示例:

ADD([[1,2][3,4]],[[5,6,7][5,7,2]],label=[[A,B,C][X,Y]])

在添加具有最大填充的维度时,应缺少零维度。在

熊猫包能完成以上任务吗,用熊猫也能给出答案吗? This link explainspandas有对齐函数和重新索引函数来完成上述功能,但是如何通过自动重定尺寸和对齐来完成加法,从而有利于最大维度的实现?在


Tags: 函数add示例顺序矩阵标签labella
2条回答

pandas重写算术运算符以完全执行您想要的操作。正在将索引加入控件,当前没有。默认情况下,它们执行外部联接:

In [39]: a = DataFrame([[1, 2], [3, 4]], columns=list('CD'), index=list('AB'))

In [40]: b = DataFrame([[1, 2, 5], [1, 3, 4], [6, 7, 8]], columns=list('CDY'), index=list('ABX'))

In [41]: a + b
Out[41]:
    C   D   Y
A   2   4 NaN
B   4   7 NaN
X NaN NaN NaN

关于这件事an open issue on GitHub。在

我在没有求助于熊猫的情况下找到了答案,但我仍然有兴趣知道如何在熊猫身上实现同样的效果,解决方案是使用外部连接:

>>>a=larry([[1,2],[3,4]],label=[['A','B'],['C','D']])

>>> b=larry([[1,2,5],[1,3,4],[6,7,8]],label=[['A','B','X'],['C','D','Y']])
>>> a
label_0
    A
    B
label_1
    C
    D
x
array([[1, 2],
       [3, 4]])
>>> c=la.add(a,b)
>>> c
label_0
    A
    B
label_1
    C
    D
x
array([[2, 4],
       [4, 7]])
>>> c=la.add(a,b,join='outer')
>>> c
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[  2.,   4.,  nan],
       [  4.,   7.,  nan],
       [ nan,  nan,  nan]])




>>> c=la.add(a,b,join='outer',missone=0)
>>> c
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[ 2.,  4.,  5.],
       [ 4.,  7.,  4.],
       [ 6.,  7.,  8.]])
>>> a
label_0
    A
    B
label_1
    C
    D
x
array([[1, 2],
       [3, 4]])
>>> b
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[1, 2, 5],
       [1, 3, 4],
       [6, 7, 8]])
>>> 

相关问题 更多 >