【问题标题】:Numerical integration of a numpy array in incremental time stepsnumpy 数组在增量时间步中的数值积分
【发布时间】:2019-11-04 11:46:06
【问题描述】:

我有两个数组。第一个是按年龄(yrs)表示的时间,第二个是需要对时间进行积分的参数。

age = [5.00000e+08, 5.60322e+08, 6.27922e+08, 7.03678e+08, 7.88572e+08,
       8.83709e+08, 9.90324e+08, 1.10980e+09, 1.24369e+09, 1.39374e+09,
       1.56188e+09, 1.75032e+09, 1.96148e+09, 2.19813e+09, 2.46332e+09,
       2.76050e+09, 3.09354e+09, 3.46676e+09, 3.88501e+09, 4.35371e+09,
       4.87897e+09, 5.46759e+09, 6.12722e+09, 6.86644e+09, 7.69484e+09,
       8.62318e+09, 9.66352e+09, 1.08294e+10, 1.21359e+10, 1.36000e+10]
sfr = [1.86120543e-02, 1.46680445e-02, 1.07275184e-02, 8.56960274e-03,
       6.44041855e-03, 4.93194263e-03, 3.69203448e-05, 2.69813985e-04,
       6.17644783e-04, 1.00780427e-02, 1.20645391e-02, 3.05009362e-02,
       3.91535011e-02, 5.35479858e-02, 7.36489068e-02, 9.63931263e-02,
       1.11108326e-01, 1.47781221e-01, 1.63057763e-01, 2.27429626e-01,
       2.20941333e-01, 2.74413180e-01, 2.72010867e-01, 4.32215233e-01,
       5.79654549e-01, 7.39362218e-01, 9.41168727e-01, 1.18868347e+00,
       1.42839043e+00, 1.91326333e+00]

我想对年龄数组进行 sfr 数组的积分,但要分步进行。 例如,第一个集成应该只包含两个数组的第一个元素,第二个集成应该包含两个数组的前 2 个元素,第三个应该包含两个数组的前 3 个元素,依此类推。并将每个步骤的积分结果保存在单个输出数组中。

【问题讨论】:

    标签: python-3.x numpy scipy


    【解决方案1】:

    您想要的结果的确切形式不是很清楚。所以,这里有两种可能性:

    age = [5.00000e+08, 5.60322e+08, 6.27922e+08, 7.03678e+08, 7.88572e+08,
           8.83709e+08, 9.90324e+08, 1.10980e+09, 1.24369e+09, 1.39374e+09,
           1.56188e+09, 1.75032e+09, 1.96148e+09, 2.19813e+09, 2.46332e+09,
           2.76050e+09, 3.09354e+09, 3.46676e+09, 3.88501e+09, 4.35371e+09,
           4.87897e+09, 5.46759e+09, 6.12722e+09, 6.86644e+09, 7.69484e+09,
           8.62318e+09, 9.66352e+09, 1.08294e+10, 1.21359e+10, 1.36000e+10]
    sfr = [1.86120543e-02, 1.46680445e-02, 1.07275184e-02, 8.56960274e-03,
           6.44041855e-03, 4.93194263e-03, 3.69203448e-05, 2.69813985e-04,
           6.17644783e-04, 1.00780427e-02, 1.20645391e-02, 3.05009362e-02,
           3.91535011e-02, 5.35479858e-02, 7.36489068e-02, 9.63931263e-02,
           1.11108326e-01, 1.47781221e-01, 1.63057763e-01, 2.27429626e-01,
           2.20941333e-01, 2.74413180e-01, 2.72010867e-01, 4.32215233e-01,
           5.79654549e-01, 7.39362218e-01, 9.41168727e-01, 1.18868347e+00,
           1.42839043e+00, 1.91326333e+00]
    
    integr_pairs = [[(a, s) for a, s in zip(age[:i], sfr[:i])] for i in range(1, len(age))]
    print(integr_pairs)
        # [[(500000000.0, 0.0186120543)], [(500000000.0, 0.0186120543), (560322000.0, 0.0146680445)], ....
    
    integr_list = [[item for t in [(a, s) for a, s in zip(age[:i], sfr[:i])] for item in t ]for i in range(1, len(age))]
    print(integr_list)
        # [[500000000.0, 0.0186120543], [500000000.0, 0.0186120543, 560322000.0, 0.0146680445], 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-02
      • 2015-11-27
      • 2021-02-21
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 2018-09-08
      • 2015-09-29
      相关资源
      最近更新 更多