Как создать матрицу инцидентов

Я пытаюсь создать

[[ 1, 1, 1, 0, 0, 0, 0, 0, 0], [-1, 0, 0, 1, 1, 0, 0, 0, 0], [ 0, -1, 0, -1, 0, 1, 1, 0, 0], [ 0, 0, 0, 0, -1, -1, 0, 1, 0], [ 0, 0, -1, 0, 0, 0, -1, 0, 1], [ 0, 0, 0, 0, 0, 0, 0, -1, -1]] S=[1, 2, 3, 4, 5, 6] D=[[1, 2], [1, 3], [1, 5], [2, 3], [2, 4], [3, 4], [3, 5], [4, 6], [5, 6]] INC = [[0]*len(D) for _ in range(len(S))] for i in range(len(D)): 

после этого я делаю что-то неправильно, где я просто получаю матрицу нулей

  for j in S: if i == j: INC.append(1) 

Я пробовал использовать D в двух разных списках, и он начал усложняться для меня

 my_list1 = [i[0] for i in D] my_list2 = [i[1] for i in D] 

2 Solutions collect form web for “Как создать матрицу инцидентов”

Мое лучшее предположение о том, что вы хотите … ваши имена переменных довольно бедны. Я не знаю, откуда берутся отрицательные значения (это ориентированный граф? Никогда не использовал матрицу инцидентов), но я бы начал с NetworkX ( networkx ) .

 import networkx as nx nodes = [1, 2, 3, 4, 5, 6] edges = [[1, 2], [1, 3], [1, 5], [2, 3], [2, 4], [3, 4], [3, 5], [4, 6], [5, 6]] G = nx.Graph() G.add_nodes_from(nodes) G.add_edges_from(edges) incidence_matrix = nx.incidence_matrix(G) # this returns a scipy sparse matrix print(incidence_matrix.toarray()) 

Вывод:

 [[ 1. 1. 1. 0. 0. 0. 0. 0. 0.] [ 1. 0. 0. 1. 1. 0. 0. 0. 0.] [ 0. 1. 0. 1. 0. 1. 1. 0. 0.] [ 0. 0. 0. 0. 1. 1. 0. 1. 0.] [ 0. 0. 1. 0. 0. 0. 1. 0. 1.] [ 0. 0. 0. 0. 0. 0. 0. 1. 1.]] 

Это просто альтернативный подход, который отличается от вашей версии, но вы можете использовать его как вдохновение. Я считаю, вы должны прочитать о append .

Во всяком случае … Это мой взгляд на вашу матрицу заболеваемости:

 rows = 6 cols = 9 ones = [[0,1,2], [0,4,5], [1,3,5,6], [4,5,7], [3,6,8], [7, 8]] INC = [ [ 0 for i in xrange(cols) ] for j in xrange(rows) ] for i,row in enumerate(ones): for col in row: INC[i][col] = 1 [[1, 1, 1, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0, 0], [0, 1, 0, 1, 0, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 0, 1, 0], [0, 0, 0, 1, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1, 1]] 

Обратите внимание, что я работаю на строках, а не на столбцах, как я подозреваю, вы делаете. Вставьте '-1', сделав значения в "edge" +/- и используйте if,, elif +, else pass, если вы хотите реализовать эту версию.

В Python3 xrange необходимо изменить на range

  • Почему диапазон (начало, конец) не включает конец?
  • Конфигурация Load Flask из нескольких файлов
  • Диапазон с шагом типа float
  • можем ли мы подсчитать размер загружаемого файла перед загрузкой в ​​python-колбу
  • Печать всех комбинаций, python
  • Нельзя ссылаться на таблицу стилей CSS в шаблоне, загружаемом python
  • Ткань - как использовать интерактивную оболочку на удаленном компьютере?
  • Как Pythonically вывести все значения из списка?
  •  
    Interesting Posts for Van-Lav

    Как запустить файл python с помощью заданий cron

    Загрузка собственного текстового набора данных в scikit-learn

    python install lxml на mac os 10.10.1

    Argparse pattern, где вводятся имена файлов через файл или список имен файлов в командной строке

    Неправильный XML, созданный SUDS

    Как получить python-сервер для преобразования recvline в строку?

    Записывается ли файл-манипулятор автоматически в Python после того, как он выходит из области видимости?

    Загрузить данные изображения blob в QPixmap

    В Python, как я прокручиваю словарь и изменяю значение, если оно что-то равняется?

    Как я могу украсить все функции класса, не набирая его снова и снова для каждого добавленного метода? Python

    Установите NLTK в python 2.7 для 64-разрядной машины

    C Python: запуск кода Python в контексте

    Flask обрабатывает PDF как свою собственную страницу

    python, связанный с Nonetype перед литьем \ сложение

    Извлечение содержимого таблицы из html с помощью python и BeautifulSoup

    Python - лучший язык программирования в мире.