我正在尝试在 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
你可以这样做:
import numpy as np
N = 100
b = np.random.random_integers(-2000,2000,size=(N,N))
b_symm = (b + b.T)/2
您可以在其中选择您想要的任何发行版np.random
或等效的 scipy 模块。
Update:如果您正在尝试构建类似图形的结构,请务必查看 networkx 包:
http://networkx.lanl.gov http://networkx.lanl.gov
它有许多内置例程来构建图表:
http://networkx.lanl.gov/reference/generators.html http://networkx.lanl.gov/reference/generators.html
此外,如果您想添加一些随机放置的零,您始终可以生成一组随机索引并将这些值替换为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)