Для массива numpy
вы можете сделать следующее:
data = np.array([[0,0.5,0.3,0.4,0.5,0.6], [0,2,3,4,5,6],[0,2.2,3.5,4.4,5.5,6.5]])
list1 = data.ravel().tolist()
# [0.0, 0.5, 0.3, 0.4, 0.5, 0.6, 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 0.0, 2.2, 3.5, 4.4, 5.5, 6.5]
Вы можете использовать генератор для перебора различных длин подсписков:
g = (range(len(i)) for i in data)
Сборкасписок координат с списком и форматированием строки для получения желаемого результата:
list2 = [f'{x}-{y}' for x in range(len(data)) for y in next(g)]
#['0-0', '0-1', '0-2', '0-3', '0-4', '0-5', '1-0', '1-1', '1-2',
# '1-3', '1-4', '1-5', '2-0', '2-1', '2-2', '2-3', '2-4', '2-5']
И еще одна альтернатива - использовать scipy.sparse.csr_matrix
:
from scipy.sparse import csr_matrix
list1 = sm.toarray().ravel().tolist()
list2 = list(zip(*sm.nonzero()))
# [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (1, 1), (1, 2), (1, 3), (1, 4),
# (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5)]