我正在尝试在 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