Преобразование десятичной матрицы в двоичную матрицу в SciPy
Вопрос
Предположим, у меня есть целочисленная матрица, которая показывает, кто кому писал по электронной почте и сколько раз.Для анализа социальных сетей я хотел бы сделать простой неориентированный график.Поэтому мне нужно преобразовать матрицу в двоичную матрицу, а затем в список кортежей.
Мой вопрос:существует ли быстрый и удобный способ свести десятичную матрицу к двоичной.
Такой, что:
26, 3, 0
3, 195, 1
0, 1, 17
Становится:
1, 1, 0
1, 1, 1
0, 1, 1
Решение
Примените scipy.sign
функцию для каждой ячейки матрицы.
[РЕДАКТИРОВАТЬ] Слава показной дурак:
Если x
тогда это твоя матрица scipy.sign(x)
дает вам двоичную матрицу.
Другие советы
Вы можете сделать следующее:
>>> import scipy
>>> a = scipy.array((12, 0, -1, 23, 0))
array([12, 0, -1, 23, 0])
>>> (a != 0).astype(int)
array([1, 0, 1, 1, 0])
Магия заключается в a != 0
часть.Вы можете применять логические выражения к массивам, и они вернут массив логических значений.Затем он преобразуется в целые числа.
Вы также можете попробовать это:
>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1
Я думаю, это также будет быстрее.