У меня есть код с плотными массивами со следующей функциональностью, и я хотел бы также поддерживать разреженные матрицы.
В частности, у меня есть четырехмерный tensor
с формой (k, k, n, n)
, который я частично сплющил в matrix
формы (k * n, k * n)
, как это.
# Roll the third dimension to the second position to get a tensor
# with shape (k, n, k, n)
rolled = np.rollaxis(tensor, 2, 1)
# Extract the dimensions
k, n = rolled.shape[:2]
# Reshape to partially flatten the array
matrix = rolled.reshape((k * n, k * n))
ВПри разреженной настройке у меня есть список списков k
на k
, где каждый элемент представляет собой разреженную матрицу n
на n
.Использование np.rollaxis
не вариант, потому что некоторые размеры редки, а некоторые плотны.Любые идеи о том, как добиться такого же поведения, чтобы я получал разреженную матрицу с формой (k * n, k * n)
?
Одним из вариантов может быть использование формата координат и установка каждого элементаmatrix
индивидуально, но это кажется довольно громоздким и подверженным ошибкам.