一个ndarray可用于表示层次结构树形数据,其中每个轴代表层次结构中的一个级别。如果树不是对称的,例如-
所得的ndarray(Z)将具有形状(1、2、2、1),其中第一个轴代表顶层(A),第二个轴代表第二层(B和C),等等。
因此-
Z[0]
表示Z[0, 0]
表示Z[0, 1]
表示Z[0, 0, 0]
表示Z[0, 0, 1]
表示Z[0, 0, 1, 0]
表示但是此数组为不存在的子项Z[0, 1, :, :]
和Z[0, 0, 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)