Предположим, мы имеем следующий вектор:Преобразование вектора на матрицу маски с использованием NumPy
v = np.array([4, 0, 1])
Цель заключается в создании 5 х 3 матрицу M
следующим образом:
[[0 1 0]
[0 0 1]
[0 0 0]
[0 0 0]
[1 0 0]]
Только один элемент в каждом столбце равен 1 для соответствующего индекса в v
. Например, поскольку v[0]
составляет 4, то M[4, 0] == 1
, а с v[2]
- 1, затем M[1, 2] == 1
.
Как я могу построить такую матрицу в Python, используя scipy и numpy? В MATLAB вы можете сделать это с помощью функций sparse
и full
в одной строке. Я бы предпочел не использовать цикл for
, так как я ищу векторную реализацию этого.
Чтобы быть ясным, вы хотите, чтобы выходная матрица была разреженной или плотной? –
Я буду использовать эту «М» в качестве матрицы масок для отмены некоторых значений путем умножения по элементам (exp: result = A. * M). M будет огромным ex "100,000x10". Поэтому моя цель - использовать наиболее оптимизированный. Либо плотный, либо разреженный был бы прекрасен, пока он быстр и векторизован. – superMind
@superMind, тогда вам, вероятно, нужна разреженная матрица. – elyase