Преобразование десятичной матрицы в двоичную матрицу в SciPy - PullRequest
2 голосов
/ 06 октября 2009

Предположим, у меня есть целочисленная матрица, которая представляет, кому и сколько раз была отправлена ​​электронная почта. Для анализа социальных сетей я бы хотел сделать простой неориентированный график. Поэтому мне нужно преобразовать матрицу в двоичную матрицу, а затем в список кортежей.

Мой вопрос: существует ли быстрый и удобный способ преобразования десятичной матрицы в двоичную.

такой, что:

26, 3, 0
3, 195, 1
0, 1, 17

становится:

1, 1, 0
1, 1, 1
0, 1, 1

Ответы [ 3 ]

2 голосов
/ 06 октября 2009

Вы можете сделать следующее:

>>> 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. Вы можете применить логические выражения к массивам, и он вернет массив логических значений. Затем он преобразуется в целые.

2 голосов
/ 06 октября 2009

Применение функции scipy.sign к каждой ячейке в матрице.

[ПРАВИТЬ] Престижность speciousfool :

Если x является вашей матрицей, то scipy.sign(x) дает вам двоичную матрицу.

1 голос
/ 12 декабря 2011

Вы также можете попробовать это:

>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1

Полагаю, это тоже будет быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...