python - 离散单纯形并使用色调在 3D 绘图处绘图
问题描述
我有一个函数,它接受 4 个输入(S、E、I、R)并返回(0、1、2)中的三个值之一。但是,S+E+I+R=N,其中 N 是常数。我尝试了以下方法:
def dummy(S,E,I,R):
if S+E<500:
return 0
elif I+R >600:
return 1
else:
return 2
N = 1e5
States = []
Cateogory = []
S = np.arange(0.0, N, 1000.)
for s in S:
E = np.arange(0.0, N-s, 1000)
if not E.shape[0]>0:
E=np.arange(0.0, 1., 1000.)
for e in E:
I = np.arange(0.0, N-s-e, 1000)
if not I.shape[0]>0:
I=np.arange(0.0, 1., 1000.)
for i in I:
states.append([s,e,i,N-s-e-i])
Cateogory.append(dummy(s,e,i,N-s-e-i))
但是它花费了太多时间来生成数据。有没有最佳的方法来做到这一点?在此之后,我打算按照这篇文章制作一个 3D 情节。
解决方案
您可以使用两种方式加快速度:
- 多处理工具箱
- 使用来自 itertool 的排列(如下所示)
from itertools import permutations
从 itertools 导入排列
def random_uniform_state():
popu=1e5
S = np.random.uniform(low=0.0, high=popu)
E = np.random.uniform(low=0.0, high=popu-S)
I = np.random.uniform(low=0.0, high=popu-(S+E))
R = popu-(S+E+I)
state = [S,E,I,R]
perms = permutations([S,E,I,R])
states = []
for state in perms:
states.append(state)
return states
推荐阅读
- javascript - 标题从不使用 jquery.floatThead 打印
- python - DataFrame 中的新列基于来自另一个 DataFrame 的行和列
- powershell - powershell 脚本通过文件名前缀合并 .csv 文件
- python - 如何根据列名和另一个列值计算行值
- caching - 禁用可能的 Node.js Orchestrator 缓存以始终返回最新数据
- c# - asp.net core 3.1中的查询字符串(输入字符串的格式不正确。)
- fortran - 如何在 fortran 中使用此子例程
- postgresql - 将行合并到 jsonb 对象中
- go - Google Cloud Datastore 提交冲突检测
- angular - Angular 10 FileReplacements 不适用于资产