增量时间步中的numpy数组的数值积分

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

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个元素,依此类推。并将每个步骤的积分结果保存在单个输出数组中。

maxiuping 回答:增量时间步中的numpy数组的数值积分

所需结果的确切形式尚不清楚。因此,这里有两种可能性:

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,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],
本文链接:https://www.f2er.com/3167031.html

大家都在问