Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 带numpy的对称矩阵 来自随机导入的* N=100 伽马=0.7 连接=零((N,N)) 对于范围(N)中的i: 对于范围(i+1)内的j: 如果随机() 连接[i,j]=1 连接[j,i]=1 其他: 连接[i,j]=0 连接[j,i]=0_Loops_Matrix_Numpy_Symmetric - Fatal编程技术网

Loops 带numpy的对称矩阵 来自随机导入的* N=100 伽马=0.7 连接=零((N,N)) 对于范围(N)中的i: 对于范围(i+1)内的j: 如果随机() 连接[i,j]=1 连接[j,i]=1 其他: 连接[i,j]=0 连接[j,i]=0

Loops 带numpy的对称矩阵 来自随机导入的* N=100 伽马=0.7 连接=零((N,N)) 对于范围(N)中的i: 对于范围(i+1)内的j: 如果随机() 连接[i,j]=1 连接[j,i]=1 其他: 连接[i,j]=0 连接[j,i]=0,loops,matrix,numpy,symmetric,Loops,Matrix,Numpy,Symmetric,我想做的是创建一个对称矩阵,填充0和1(概率为0.7的1)。 这是双for循环,非常低效…我将用numpy制作一些东西,我相信它可以大大加快速度? 有人知道如何进行吗? 多谢各位 您可以使用numpy random模块生成随机向量,并使用这些向量为矩阵种子。例如: from random import * N = 100 gamma = 0.7 connect = zeros((N,N)) for i in range(N): for j in range(i+1):

我想做的是创建一个对称矩阵,填充0和1(概率为0.7的1)。 这是双for循环,非常低效…我将用numpy制作一些东西,我相信它可以大大加快速度? 有人知道如何进行吗?
多谢各位

您可以使用numpy random模块生成随机向量,并使用这些向量为矩阵种子。例如:

from random import *
N = 100
gamma = 0.7
connect = zeros((N,N))

for i in range(N):
    for j in range(i+1):
        if random() < gamma:
            connect[i,j] = 1
            connect[j,i] = 1
        else:
            connect[i,j] = 0
            connect[j,i] = 0

编辑2

这比上面的行版本更简单,速度大约快4倍。此处,三角形矩阵直接由完整的权重矩阵形成,然后添加到其转置中以生成对称矩阵:

N = 100
gamma = 0.7
connect = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
    rval = (np.random.random_sample(size=(N-i))<gamma).astype(np.int32)
    connect[i,i:] = rval

connect += np.triu(connect,1).T
N=100
伽马=0.7

a=np.triu((np.random.random_sample(size=(N,N))很好。这非常有帮助,我真的很感激!它非常有效如果你发现答案解决了你的问题,那么也许你可以接受答案。
N = 100
gamma = 0.7
connect = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
    rval = (np.random.random_sample(size=(N-i))<gamma).astype(np.int32)
    connect[i,i:] = rval

connect += np.triu(connect,1).T
N = 100
gamma = 0.7
a=np.triu((np.random.random_sample(size=(N,N))<gamma).astype(np.int32))
connect = a + np.triu(a,1).T