@notxleb

Как в numpy из матрицы с векторами из int сделать матрицу из булевых векторов?

Допустим есть такая матрица indexes = [[[1,2,3]], [[3,2,4]]]. Как получить матрицу [[[0,1,1,1,0]], [0,0,1,1,1]]] без использования for желательно.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
гугли что-то вроде astype(bool)
Ответ написан
@dmshar
С учетом всех уточнений, наиболее лаконичное, что мне удалось придумать:

import numpy as np
import itertools
ind=np.array([[[1,2,3]], [[3,2,4]]])
M=4

lt=np.zeros((len(ind),1,M+1),dtype=int)
for a in range(len(ind)):
    lt[a,0,list(itertools.chain(*ind[a]))]+=1

print(lt)

Результат:
[[[0 1 1 1 0]]
 [[0 0 1 1 1]]]


Если бы не странный размер исходного массива, о которой я писал выше:
ind.shape
Out[15]: (2, 1, 3)

все было бы на много проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы