python - 如何用极低密度的零填充零矩阵
问题描述
我有一个大小为零的 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
有人有什么建议吗?谢谢
解决方案
如果最终使用 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))
推荐阅读
- bash - Python子进程check_call:如何将非0退出代码分配给变量而不是引发异常?
- php - Laravel 如何使用 Cronofy API 更新日历事件
- firebase - 在flutter中为firestore列表执行搜索文本时出错
- python - 在 python 中使用 xpath/lxml 在 html 中选择 #text 时出现问题,div 用双引号括起来
- paypal - 多个 PayPal 添加到购物车按钮,带有自己的结帐 url
- php - 在 WooCommerce 商店页面中对没有缩略图的产品进行排序
- javascript - `Vue3 - Vite`项目别名src到@不工作
- flutter - Flutter - 使用带有自定义对话框的 WillPopScope 来确认应用退出
- python - 根据列和过滤熊猫交叉表
- nlp - 方面级实体提取和情感分析