python - 在 Numpy 中生成对称矩阵

标签 python random matrix numpy adjacency-matrix

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

它有许多内置例程来构建图表:

http://networkx.lanl.gov/reference/generators.html

此外,如果您想添加一些随机放置的零,您始终可以生成一组随机索引并将值替换为零。

关于python - 在 Numpy 中生成对称矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806790/

相关文章:

ruby - Array#sample 是否保证随机顺序?

c++ - 矩阵的特征有效传递

python - python中的嵌套try语句?

python - 在单次传递数据中使用 pyspark 查找最小值/最大值

ruby-on-rails - 如何随机化 `ActiveRecord::Relation` 的数组元素位置?

c - 使用c中的线程对矩阵中的元素求和

javascript - 欧拉项目#345 : Max sum matrix with unique path

python - 从 Numpy 数组问题中绘制日期

python - 如何用空格填充 str 列以强制达到所需的长度?

algorithm - 什么RNG(随机数生成器)算法适合扑克牌洗牌?