Библиотека dionysus python создает «диаграмму постоянства» после вычисления постоянной гомологии. (минимальный воспроизводимый пример можно найти в конце поста)
>>> dgm
Diagram with 6 points
>>> dgm[0]
(0.049009,inf)
>>> list(dgm)
[(0.049009,inf),
(0.0515362,0.257068),
(0.0534305,0.490787),
(0.0614555,0.414525),
(0.231776,0.311284),
(0.247975,0.401911)]
Теперь, хотя записи диаграммы выглядят как кортежи, это не так. К ним можно получить доступ по значениям «рождения» и «смерти». Например,
>>> dgm[0].birth
0.049009
>>> dgm[0].death
inf
Итак, np.array(dgm)
не преобразует его в массив с двумя столбцами. Я использую
dgmList = []
for point in dgm:
dgmList.append([point.birth, point.death])
dgmArray = np.array(dgmList)
, но это очень неэффективно, особенно когда диаграмма большая. Есть ли более быстрое решение для создания массива numpy из диаграммы?
Редактировать: Ниже приведен минимальный воспроизводимый пример для переменной dgm
.
a = np.random.random((10,10))
f_lower_star = d.fill_freudenthal(a)
p = d.homology_persistence(f_lower_star)
diagrams = d.init_diagrams(p, f_lower_star)
dgm = diagrams[0]