Создание матрицы смежности из случайных индексов с использованием срезов - PullRequest
0 голосов
/ 23 мая 2018

Учитывая список смежности Y:

Y = np.array([[0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
              [0., 0., 0., 0., 0., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0.],
              [0., 0., 0., 0., 1., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
              [0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 1., 0., 0., 1., 0.],
              [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0.],
              [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
              [0., 1., 0., 1., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1.],
              [0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
              [1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 1.],
              [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
              [0., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
              [0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 1.],
              [0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0.],
              [0., 0., 0., 1., 1., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0.],
              [0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 1., 0., 0., 0.]])

и список индексов случайных чисел:

idx = sorted(random.sample(range(0, len(Y)), 5))
[0, 3, 7, 10, 14]

Я бы хотел 0-й, 3-й, 7-й, 10-й и 14-й ряд / столбециз матрицы смежности, выделенной так, что мой новый Yhat становится точкой, где 5 строк / столбцов перекрываются, например: overlap

, что означает, что мой Yhat становится

Yhat = np.array([[0,0,0,0,0],
                 [0,0,0,1,0],
                 [0,0,0,0,0],
                 [0,1,0,0,0],
                 [0,0,0,0,0]])

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

1 Ответ

0 голосов
/ 23 мая 2018

Похоже, что в этом дело, сначала нарежьте строки idx, а затем нарезайте столбцы idx: Y[idx][:,idx]

...