map и numpy.zeros
import numpy as np
a=np.zeros((9,1))
b=np.array([1,3,7,9])
требуется
[[1],[0],[1],[0],[0],[0],[0],[0],[1]]
Хотел использовать map но никак немогу вспомнить как.
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Могу только предположить, что вы забыли одну единицу выставить (в позиции 7). Тогда так:
import numpy as np
a=np.zeros((9,1), dtype=np.int)
b=np.array([1,3,7,9])
a[b-1] = 1
print(a.tolist())
Вывод:
[[1], [0], [1], [0], [0], [0], [1], [0], [1]]
Преобразование tolist тут нужно только для красоты вывода, чтобы в одну строчку напечаталось, как у вас.
Зачем тут может быть нужен map не представляю, просто обращаетесь к элементам массива по индексам и всё. Только учесть, что индексация идёт с нуля.
Ну, вернее, map можно применить, если очень хочется, конечно:
print(list(map(lambda x: [int(x[0] in b)], enumerate(a, 1))))
Вывод:
[[1], [0], [1], [0], [0], [0], [1], [0], [1]]
Или ещё так, но без вложенных списков тогда:
print(list(map(int, map(b.__contains__, range(1, len(a)+1)))))
Вывод:
[1, 0, 1, 0, 0, 0, 1, 0, 1]