Я пытаюсь создать симметричные матрицы в numpy. В частности, эти матрицы должны иметь записи случайных мест, и в каждой записи содержимое может быть случайным. Вдоль главной диагонали нас не интересует, что там есть, поэтому я тоже рандомизировал их.
Подход, который я принял, состоит в том, чтобы сначала сгенерировать nxn всю нулевую матрицу и просто петлю по индексам матриц. Однако, учитывая, что рассмотрение цикла является относительно дорогостоящим в python, мне интересно, могу ли я получить то же самое, не используя python для циклов.
Есть ли какие-то вещи, встроенные в numpy, которые позволяют мне более эффективно выполнять мою задачу?
Вот мой текущий код:
import numpy as np
import random
def empty(x, y):
return x*0
b = np.fromfunction(empty, (n, n), dtype = int)
for i in range(0, n):
for j in range(0, n):
if i == j:
b[i][j] = random.randrange(-2000, 2000)
else:
switch = random.random()
random.seed()
if switch > random.random():
a = random.randrange(-2000, 2000)
b[i][j] = a
b[j][i] = a
else:
b[i][j] = 0
b[j][i] = 0