【发布时间】:2021-08-18 01:46:30
【问题描述】:
我想在python中创建一个随机稀疏矩阵,其中非零元素在1到7之间,对角线元素为零。同样,任何行或列都不应该所有元素都为零。零元素的百分比也将随机选择。此外,如果 i,j 不为零,则 j,i 应为 0。
到目前为止,我有以下内容,我无法弄清楚如何确保行和列不总是 0,以及如何确保如果 i,j 不为零,那么 j,i 应该是零。
Lij = np.random.randint(1,10,size=n * n) Lij =
Lij.reshape(nbanks,nbanks) np.fill_diagonal(Lij, 0)
num_replaced = np.round(0.7 * Lij.shape[0]*Lij.shape[1])
indices_x = np.random.randint(0, Lij.shape[0], int(num_replaced))
indices_y = np.random.randint(0, Lij.shape[1], int(num_replaced))
Lij[indices_x, indices_y] = 0
任何帮助将不胜感激!
【问题讨论】:
-
“零元素的百分比也将随机选择” - 什么分布?
-
应该是统一的(0,1)
-
介于 0 和 1% 之间还是介于 0 和 100% 之间?这两种解释都不可行,经常选择太少或太多填充的单元格。
-
@Jasen 理想情况下为 0 到 100%。但是什么范围是可行的?
-
你不能有 50% 或更多因为每个完整单元格的 x,y 交换需要是空的,对角线也是如此,你不能少于 1/n,因为有每行都需要一个完整的。
标签: python matrix graph pytorch