我正在尝试在 numpy 中生成对称矩阵。具体来说,这些矩阵要有随机放置的条目,并且在每个条目中的内容可以是随机的。沿着主对角线,我们不关心那里有什么条目,所以我也将它们随机化了。
我采用的方法是首先生成一个 nxn 全零矩阵,然后简单地遍历矩阵的索引。我怎样才能使用 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 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以做类似的事情:
您可以在
np.random
或等效的 scipy 模块中选择您想要的任何发行版。更新: 如果你正在尝试构建类似图形的结构,一定要检查 networkx 包:
http://networkx.lanl.gov
它有许多内置的例程来构建图形:
http://networkx.lanl.gov/reference/generators.html
此外,如果您想添加一些随机放置的零,您始终可以生成一组随机索引并将这些值替换为零。