我正在尝试在 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 模块中选择所需的任何发行版。
更新:如果您正在尝试构建类似图形的结构,请务必查看 networkx 包:
它有许多内置例程来构建图表:
http://networkx.lanl.gov/reference/generators.html
此外,如果您想添加一些随机放置的零,您始终可以生成一组随机索引并将值替换为零。
关于python - 在 Numpy 中生成对称矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806790/