Создайте двоичную матрицу из соответствующих значений каждой строки Python - PullRequest
0 голосов
/ 26 октября 2018

У меня следующая проблема.Я хотел бы создать двоичную матрицу, которая выглядит следующим образом (извините, я должен был проиллюстрировать это с помощью Excel)

enter image description here

из этого CSV-файла с 1 колонкой:

enter image description here

По сути, я хочу, чтобы Python читал столбец, сравнивал каждую строку и, если 2 строки имеют одинаковое значение, координата этой пары в матрицепринял бы значения 1 и 0 в противном случае.

Итак, если бы у меня было 10 строк, у меня была бы матрица 10 x 10 с диагональю, равной всем 1, и верхний треугольник выглядел бы точно так же, как и верхний треугольник, разделенный диагональю.

Есть ли способ сделать это в Python и Pandas / Numpy?

Большое спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Простейшим способом было бы просто сравнить массив с его транспонированием в 2 измерениях, например:

In []:
a = np.array(['a', 'b', 'a', 'c'])
(a[:,None] == a[None,:]).astype(int)

Out[]:
array([[1, 0, 1, 0],
       [0, 1, 0, 0],
       [1, 0, 1, 0],
       [0, 0, 0, 1]])

Примечание: форма a[None,:] равна (1, 4) и a[:,None] (эквивалентно a[None,:].T) это (4, 1), поэтому, сравнивая их, вы транслируете результаты в квадратную матрицу (4, 4).

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