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]
→ Ссылка