【问题标题】:Random Sparse Matrix in PythonPython中的随机稀疏矩阵
【发布时间】: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


【解决方案1】:

一种可能的算法是从随机列表中选择坐标,如果 xy 和 yx 都可用并且 x != y 则在该坐标中设置一个值。继续,直到你有足够的百分比填充。

然后检查所有行是否至少有一个非零。

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多