生成具有特定概率的稀疏矩阵(Python)

2024-05-15 11:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个稀疏矩阵。 矩阵有0,1,和-1作为元素,我想做一个条件,1的25%,1的25%,和0的50%在整个矩阵中。 我想将纯python实现的代码表示为SciPy或Tensorflow。你知道吗

for n in range(LWE_N):
    for l in range(LWE_L):
        tmp_S=random.getrandbits(2)
        if tmp_S==1: sk_S[n][l]=1    
        elif tmp_S==0: sk_S[n][l]=-1 
        else: sk_S[n][l]=0         

Tags: 代码in元素foriftensorflowrange矩阵
2条回答

您可以使用numpy轻松创建满足要求的非稀疏矩阵:

import numpy as np

n, m = 10, 10
X = np.random.rand(n, m) - 0.5
X = np.sign(X) * (np.abs(X) > 0.25)

这可以很容易地转换成sparse一个。然而,当稀疏度约为0.5时,某些表示可能比密集表示几乎没有优势。你知道吗

考虑将变量LWE\\N和LWE\\L重命名为小写等价物,除非它们是全局常量。您可以通过以下方式获得由指定整数填充的随机矩阵:

import numpy as np
LWE_N = 10
LWE_L = 5
flat_m = np.random.choice((0, -1, 1,), p=(0.5, 0.25, 0.25), size=LWE_N * LWE_L)
m = flat_m.reshape((LWE_N, LWE_L))

见:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html

相关问题 更多 >