是否有可能在NumPy中有效地对非对称的层次树结构数据进行建模?

问题描述 投票:0回答:1

一个ndarray可用于表示层次结构树形数据,其中每个轴代表层次结构中的一个级别。如果树不是对称的,例如-

  • A有两个孩子B和C
  • B有两个孩子D和E
  • E有一个孩子F

所得的ndarray(Z)将具有形状(1、2、2、1),其中第一个轴代表顶层(A),第二个轴代表第二层(B和C),等等。

因此-

  • A用Z[0]表示
  • B用Z[0, 0]表示
  • C由Z[0, 1]表示
  • D用Z[0, 0, 0]表示
  • E由Z[0, 0, 1]表示
  • F由Z[0, 0, 1, 0]表示

但是此数组为不存在的子项Z[0, 1, :, :]Z[0, 0, 0, :]分配元素。如果树很深且不平衡,则大多数元素都可以代表这些不存在的孩子

是否有更好的方法来模拟这些情况?

numpy modeling
1个回答
0
投票

不确定这是否正是您要寻找的,我认为确实没有一种有效的方法,但这是我的答案:

def sparse():

    d = np.arange(2)
    f = np.arange(4)
    e = np.array(f)
    b = np.array([d, e])
    c = np.arange(4)
    a = np.array([c, b])

    return np.array([a,b])

输出:

>>> sparse()
array([[array([0, 1, 2, 3]),
        array([array([0, 1]), array([0, 1, 2, 3])], dtype=object)],
       [array([0, 1]), array([0, 1, 2, 3])]], dtype=object)
© www.soinside.com 2019 - 2024. All rights reserved.