我正試圖在numpy中生成對稱矩陣。具體而言,這些矩陣將具有隨機地點條目,並且在每個條目中,內容可以是隨機的。沿着主對角線,我們不關心那裏有什麼內容,所以我也隨機化了這些內容。在Numpy中生成對稱矩陣
我採取的方法是首先生成一個nxn全零矩陣,並簡單地遍歷矩陣的索引。然而,考慮到循環在python中相對昂貴,我想知道如果我可以在不使用python for循環的情況下實現同樣的功能。
是否有一些內置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
謝謝!這是一個有效的解決方案。但是,有什麼方法可以讓它隨機放置零點?這個矩陣應該表示圖的一種鄰接矩陣,所以有一個隨機分佈零的矩陣是比較好的。 – Ryan
@Ryan:你關心隨機條目有什麼樣的分佈?如果你添加'b + b.T',你會得到一個非均勻分佈,集中在0. – unutbu
我正在驗證矩陣的一些屬性。它更努力提供一些數學性質的令人信服的證據,因此這裏的分佈並不重要。雖然謝謝! – Ryan