Próbuję generować symetryczne macierze w numpy. W szczególności te macierze mają mieć losowe pozycje, a w każdym wpisie zawartość może być losowa. Wzdłuż głównej przekątnej nie jesteśmy zainteresowani tym, co tam są, więc też je randomizowałem.Generowanie symetrycznych macierzy w Numpy
Podejście, które podjąłem, polega na wygenerowaniu macierzy zerowej i zerowej na wskaźnikach macierzy. Jednak biorąc pod uwagę biorąc pod uwagę pętli jest stosunkowo drogie w Pythona, zastanawiam się, czy mogę osiągnąć to samo bez używania Pythona dla pętli.
Czy jest kilka rzeczy wbudowanych w numpy, które pozwalają mi skuteczniej osiągnąć mój cel?
Tu jest mój bieżący kod:
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
Dziękujemy! To jest skuteczne rozwiązanie. Czy jest jakiś sposób, aby uzyskać losowe zera w miejscach? Ta macierz ma reprezentować rodzaj macierzy sąsiedztwa dla wykresu, więc preferowane jest posiadanie macierzy z losowo rozmieszczonymi zerami. – Ryan
@Ryan: Czy obchodzi cię, jaki rodzaj dystrybucji mają losowe wpisy? Jeśli dodasz 'b + b.T', otrzymasz nierównomierną dystrybucję skoncentrowaną wokół 0. – unutbu
Weryfikuję niektóre właściwości macierzy.Jest to bardziej wysiłek, aby dostarczyć przekonujących dowodów na pewne własności matematyczne, więc rozkład tutaj nie jest tak ważny. W każdym razie dzięki! – Ryan