制作具有特定概率的稀疏矩阵(Python)

时间:2018-09-06 05:10:23

标签: python tensorflow matrix scipy sparse-matrix

我想制作一个稀疏矩阵。 矩阵具有0、1和-1作为元素,我想使整个矩阵中1、25%-1和50%0的条件成为条件。 我想将纯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         

2 个答案:

答案 0 :(得分:2)

考虑将变量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

答案 1 :(得分:0)

您可以使用 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时,某些表示可能比密集表示提供的优势很少甚至没有。