Код: Выделить всё
matrix = np.array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
row_idx = np.array([0, 0, 0,
0, 0, 0,
0, 0, 0,])
col_idx = np.array([0, 1, 2,
0, 1, 2,
0, 1, 2])
Код: Выделить всё
result = np.array([0, 3, 6, 1, 4, 7, 2, 5, 8])
Проблема ravel в том, что он не обобщает то, где находится матрица. области, сгруппированные по строкам, а другие области по столбцам на основе row_idx и col_idx. Может быть комбинация группировки строк и столбцов, как показано ниже:
В этом примере
Код: Выделить всё
matrix = np.array([[0, 1, 2],
[4, 5, 6],
[8, 9, 10]])
row_idx = np.array([0, 0, 0,
0, 0, 0,
1, 1, 1])
col_idx = np.array([0, 0, 1,
0, 0, 1,
0, 0, 1])
Код: Выделить всё
result (parentheses to highlight the groups):
(0, 1, 4, 5), (2, 6), (8,9) (10)
Я попробовалагрегировать() из пакета numpy_groupies, но он медленный и возвращает массив, объединяющий np.arrays и ints (что затрудняет и замедляет дальнейшие манипуляции).
Подробнее здесь: https://stackoverflow.com/questions/782 ... ndex-group