Преобразование десятичной матрицы в двоичную матрицу в SciPy

StackOverflow https://stackoverflow.com/questions/1524023

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

Такой, что:

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

Я думаю, это также будет быстрее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top