0

我有 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]])

应该产生具有最大尺寸的输出,在添加时用零填充缺失的尺寸。

pandas 包可以完成上述任务吗,有人也可以使用 pandas 给出答案吗? 这个链接解释了 pandas 有 align 函数和 reindex 函数来完成上述操作,但是如何通过自动重新尺寸和对齐来完成加法,有利于最大尺寸?

4

2 回答 2

1

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

GitHub 上有一个关于此的未解决问题。

于 2013-09-23T04:12:39.513 回答
0

我在不求助于 pandas 的情况下找到了答案,但仍然想知道如何在 pandas 中完成相同的操作,解决方案是使用外部 Join:

>>>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']])
>>> 一个
标签_0
    一个
    乙
标签_1
    C
    D
X
数组([[1, 2],
       [3, 4]])
>>> c=la.add(a,b)
>>> c
标签_0
    一个
    乙
标签_1
    C
    D
X
数组([[2, 4],
       [4, 7]])
>>> c=la.add(a,b,join='outer')
>>> c
标签_0
    一个
    乙
    X
标签_1
    C
    D
    是
X
数组([[ 2., 4., 南],
       [4., 7., 南],
       [南,南,南]])




>>> c=la.add(a,b,join='outer',missone=0)
>>> c
标签_0
    一个
    乙
    X
标签_1
    C
    D
    是
X
数组([[ 2., 4., 5.],
       [4., 7., 4.],
       [6., 7., 8.]])
>>> 一个
标签_0
    一个
    乙
标签_1
    C
    D
X
数组([[1, 2],
       [3, 4]])
>>> 乙
标签_0
    一个
    乙
    X
标签_1
    C
    D
    是
X
数组([[1, 2, 5],
       [1, 3, 4],
       [6, 7, 8]])
>>>

于 2013-09-23T04:36:12.283 回答