Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用极低密度的1填充零矩阵_Python_Numpy_Random - Fatal编程技术网

Python 如何用极低密度的1填充零矩阵

Python 如何用极低密度的1填充零矩阵,python,numpy,random,Python,Numpy,Random,我有一个由大小为(850850)的零组成的3D矩阵,我想以极低密度=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)

我有一个由大小为(850850)的零组成的3D矩阵,我想以极低密度=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
有人有什么建议吗?
谢谢

我不确定如果使用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))

不确定如果最终使用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))