【问题标题】:How to fill a zeros matrix with an extremely low density of ones如何用极低密度的零填充零矩阵
【发布时间】:2020-07-07 17:18:04
【问题描述】:

我有一个大小为零的 3D 矩阵 (850,850,850),我想以均匀的方式在这个矩阵中插入一个,密度极低=8*10^-7。 我尝试使用 random.sparse (它适用于更高的密度)但它不起作用,我认为密度太低并且接近于零,实际上没有确实应该有 50 个的。 这是更好理解的代码:

import numpy as np
import random

space=np.zeros(shape=(850,850,850))
den=50/(850*850*850)
for k in range (0,850): 
   rdm_space=sparse.random(850, 850, density=den, data_rvs=np.ones)
   rdm_space=rdm_space.toarray()                                                                 
   space[:][:][k] = vac_space

有人有什么建议吗? 谢谢

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    如果最终得到 NumPy 数组,不确定为什么需要稀疏采样

    仅对索引进行采样并将值设置为 1

    顺理成章

    import numpy as np
    
    N = 850*850*850
    o = 50
    space=np.zeros(N, dtype=np.int32)
    
    idx = np.random.choice(N, size=o, replace=False) # sampled indices
    
    space[idx]=1 # set values at idx to one
    
    # quick check
    q = space[space>0]
    print(len(q))
    
    # make final properly shaped array
    np.reshape(space, newshape=(850,850,850))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2019-06-15
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多