我想制作一个稀疏矩阵。 矩阵具有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
答案 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时,某些表示可能比密集表示提供的优势很少甚至没有。