【问题标题】:Discretizing a simplex and plotting at 3D plot with hue离散单纯形并使用色调在 3D 绘图处绘图
【发布时间】:2021-04-08 04:30:01
【问题描述】:

我有一个函数,它接受 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))

但是生成数据需要花费太多时间。有没有最佳的方法来做到这一点?在此之后,我打算按照post 制作一个 3D 绘图。

【问题讨论】:

    标签: python matplotlib plotly seaborn


    【解决方案1】:

    您可以使用两种方式加快速度:

    1. 多处理工具箱
    2. 使用来自 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
    

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2017-07-20
      • 2012-07-28
      • 2016-08-17
      • 2019-04-16
      • 2021-04-24
      相关资源
      最近更新 更多