Как преобразовать трехмерный массив в Python? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть массив 3D NumPy, который я хочу преобразовать в трехмерную разреженную матрицу в Python. Я посмотрел модуль scipy.sparse и нашел только реализации 2D разреженных матриц. Например,

Ввод:

array([[[0],
        [0],
        [1],
        [0],
        [1],
        [0],
        [0]],
       [[1],
        [0],
        [1],
        [0],
        [0],
        [0],
        [0]]])

Выход:

(0,0,2) 1
(0,0,4) 1
(0,1,0) 1
(0,1,2) 1

Как бы это сделать?

1 Ответ

0 голосов
/ 06 сентября 2018

в n измерениях, вы можете найти индексы с:

ind=np.array(np.where(a!=0)).T
#array([[0, 2, 0],
#       [0, 4, 0],
#       [1, 0, 0],
#       [1, 2, 0]], dtype=int64)

и соответствующие значения, например, с:

ravel_ind=np.apply_along_axis(ravel_multi_index,1,ind,a.shape)
values=np.take(a,ravel_ind)
# array([1, 1, 1, 1])  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...