模拟 - 加速 python 中的脚本

问题描述 投票:0回答:1

我有以下脚本:

import pandas as pd
import numpy as np
import os
import scipy.stats as sp
    
raw = pd.read_csv("ELT_RawData.csv")

raw["weight"] = raw["RATE"] / np.sum(raw["RATE"])
MU = np.sum(raw["RATE"])

poisson = sp.poisson(mu=MU)
n_simulations = 10000
xs = 5e6
lim = 10e6

result = np.empty((n_simulations))

for i in range(n_simulations):
    no_clm = poisson.rvs(size=1)
    
    #simulate beta distribution
    
    sampled_events = raw.sample(n=no_clm,weights=raw["weight"])
    
    #calculate params for beta distribution
    a_1 = ( (sampled_events["PERSPVALUE"] / (sampled_events["STDDEVI"]+sampled_events["STDDEVC"]))**2*(1 - sampled_events["PERSPVALUE"]/sampled_events["EXPVALUE"]) - \
             sampled_events["PERSPVALUE"] / sampled_events["EXPVALUE"] )
        
    b_1 = a_1*(sampled_events["EXPVALUE"]/sampled_events["PERSPVALUE"]-1)
    
    #simulate from said distribution
    clm_sev = np.array(sp.beta(a_1,b_1).rvs(no_clm)*sampled_events["EXPVALUE"])
    
    #apply features
    xol_loss = np.clip(a=clm_sev-xs,a_min=0,a_max=lim)
    
    #store result
    result[i] = xol_loss.sum()
    
result.mean()

raw
数据可以这样读取:

raw = pd.DataFrame.from_dict({'EVENTID': {0: 'A_0', 1: 'A_1', 2: 'A_2', 3: 'A_3', 4: 'A_4', 5: 'A_5', 6: 'A_6', 7: 'A_7', 8: 'A_8', 9: 'A_9', 10: 'A_10', 11: 'A_11', 12: 'A_12', 13: 'A_13', 14: 'A_14', 15: 'A_15', 16: 'A_16', 17: 'A_17', 18: 'A_18', 19: 'A_19', 20: 'A_20', 21: 'A_21', 22: 'A_22', 23: 'A_23', 24: 'A_24', 25: 'A_25', 26: 'A_26', 27: 'A_27', 28: 'A_28', 29: 'A_29', 30: 'A_30', 31: 'A_31', 32: 'A_32', 33: 'A_33', 34: 'A_34', 35: 'A_35', 36: 'A_36', 37: 'A_37', 38: 'A_38', 39: 'A_39', 40: 'A_40', 41: 'A_41', 42: 'A_42', 43: 'A_43', 44: 'A_44', 45: 'A_45', 46: 'A_46', 47: 'A_47', 48: 'A_48', 49: 'A_49', 50: 'A_50', 51: 'A_51', 52: 'A_52', 53: 'A_53', 54: 'A_54', 55: 'A_55', 56: 'A_56', 57: 'A_57', 58: 'A_58', 59: 'A_59', 60: 'A_60', 61: 'A_61', 62: 'A_62', 63: 'A_63', 64: 'A_64', 65: 'A_65', 66: 'A_66', 67: 'A_67', 68: 'A_68', 69: 'A_69', 70: 'A_70', 71: 'A_71', 72: 'A_72', 73: 'A_73', 74: 'A_74', 75: 'A_75', 76: 'A_76', 77: 'A_77', 78: 'A_78', 79: 'A_79', 80: 'A_80', 81: 'A_81', 82: 'A_82', 83: 'A_83', 84: 'A_84', 85: 'A_85', 86: 'A_86', 87: 'A_87', 88: 'A_88', 89: 'A_89', 90: 'A_90', 91: 'A_91', 92: 'A_92', 93: 'A_93', 94: 'A_94', 95: 'A_95', 96: 'A_96', 97: 'A_97', 98: 'A_98', 99: 'A_99', 100: 'A_100', 101: 'A_101', 102: 'A_102', 103: 'A_103', 104: 'A_104', 105: 'A_105', 106: 'A_106', 107: 'A_107', 108: 'A_108', 109: 'A_109', 110: 'A_110', 111: 'A_111', 112: 'A_112', 113: 'A_113', 114: 'A_114', 115: 'A_115', 116: 'A_116', 117: 'A_117', 118: 'A_118', 119: 'A_119', 120: 'A_120', 121: 'A_121', 122: 'A_122', 123: 'A_123', 124: 'A_124', 125: 'A_125', 126: 'A_126', 127: 'A_127', 128: 'A_128', 129: 'A_129', 130: 'A_130', 131: 'A_131', 132: 'A_132', 133: 'A_133', 134: 'A_134', 135: 'A_135', 136: 'A_136', 137: 'A_137', 138: 'A_138', 139: 'A_139', 140: 'A_140', 141: 'A_141', 142: 'A_142', 143: 'A_143', 144: 'A_144', 145: 'A_145', 146: 'A_146', 147: 'A_147', 148: 'A_148', 149: 'A_149', 150: 'A_150', 151: 'A_151', 152: 'A_152', 153: 'A_153', 154: 'A_154', 155: 'A_155', 156: 'A_156', 157: 'A_157', 158: 'A_158', 159: 'A_159', 160: 'A_160', 161: 'A_161', 162: 'A_162', 163: 'A_163', 164: 'A_164', 165: 'A_165', 166: 'A_166', 167: 'A_167', 168: 'A_168', 169: 'A_169', 170: 'A_170', 171: 'A_171', 172: 'A_172', 173: 'A_173', 174: 'A_174', 175: 'A_175', 176: 'A_176', 177: 'A_177', 178: 'A_178', 179: 'A_179', 180: 'A_180', 181: 'A_181', 182: 'A_182', 183: 'A_183', 184: 'A_184', 185: 'A_185', 186: 'A_186', 187: 'A_187', 188: 'A_188', 189: 'A_189', 190: 'A_190', 191: 'A_191', 192: 'A_192', 193: 'A_193', 194: 'A_194', 195: 'A_195', 196: 'A_196', 197: 'A_197'}, 'RATE': {0: 0.001013797, 1: 0.001013797, 2: 0.001013797, 3:
0.001013797, 4: 0.001013797, 5: 0.001013797, 6: 0.001013797, 7: 0.001013797, 8: 0.001013797, 9: 0.001013797, 10: 0.001013797, 11: 0.001013797, 12: 0.001013797, 13: 0.001013797, 14: 0.001013797, 15: 0.001013797, 16: 0.001013797, 17: 0.001013797, 18: 0.001013797, 19: 0.001013797, 20: 0.001013797, 21: 0.001013797, 22: 0.001013797, 23: 0.001013797, 24: 0.001013797, 25: 0.001013797, 26: 0.001013797, 27: 0.001013797, 28: 0.001013797, 29: 0.001013797, 30: 0.001013797, 31: 0.001013797, 32: 0.001013797, 33: 0.001013797, 34: 0.001013797, 35: 0.001013797, 36: 0.001013797, 37: 0.001013797, 38: 0.001013797, 39: 0.001013797, 40: 0.001013797, 41: 0.001013797, 42: 0.001013797, 43: 0.001013797, 44: 0.001013797, 45: 0.001013797, 46: 0.001013797, 47: 0.001013797, 48: 0.001013797, 49: 0.001013797, 50: 0.001013797, 51: 0.001013797, 52: 0.001013797, 53: 0.001013797, 54: 0.001013797, 55: 0.001013797, 56: 0.001013797, 57: 0.001013797, 58: 0.001013797, 59: 0.001013797, 60: 0.001013797, 61: 0.001013797, 62: 0.001013797, 63: 0.001013797, 64: 0.001013797, 65: 0.001013797, 66: 0.001013797, 67: 0.001013797, 68: 0.001013797, 69: 0.001013797, 70: 0.001013797, 71: 0.001013797, 72: 0.001013797, 73: 0.001013797, 74: 0.001013797, 75: 0.001013797, 76: 0.001013797, 77: 0.001013797, 78: 0.001013797, 79: 0.001013797, 80: 0.001013797, 81: 0.001013797, 82: 0.001013797, 83: 0.001013797, 84: 0.001013797, 85: 0.001013797, 86: 0.001013797, 87: 0.001013797, 88: 0.001013797, 89: 0.001013797, 90: 0.001013797, 91: 0.001013797, 92: 0.001013797, 93: 0.001013797, 94: 0.001013797, 95: 0.001013797, 96: 0.001013797, 97: 0.001013797, 98: 0.001013797, 99: 0.001013797, 100: 0.001013797, 101: 0.001013797, 102: 0.001013797, 103: 0.001013797, 104: 0.001013797, 105: 0.001013797, 106:
0.001013797, 107: 0.001013797, 108: 0.001013797, 109: 0.001013797, 110: 0.001013797, 111: 0.001013797, 112: 0.001013797, 113:
0.001013797, 114: 0.001013797, 115: 0.001013797, 116: 0.001013797, 117: 0.001013797, 118: 0.001013797, 119: 0.001013797, 120:
0.001013797, 121: 0.001013797, 122: 0.001013797, 123: 0.001013797, 124: 0.001013797, 125: 0.001013797, 126: 0.001013797, 127:
0.001013797, 128: 0.001013797, 129: 0.001013797, 130: 0.001013797, 131: 0.001013797, 132: 0.001013797, 133: 0.001013797, 134:
0.001013797, 135: 0.001013797, 136: 0.001013797, 137: 0.001013797, 138: 0.001013797, 139: 0.001013797, 140: 0.001448281, 141:
0.001448281, 142: 0.001448281, 143: 0.001448281, 144: 0.001448281, 145: 0.001448281, 146: 0.001448281, 147: 0.001448281, 148:
0.001448281, 149: 0.001448281, 150: 0.001448281, 151: 0.001448281, 152: 0.001448281, 153: 0.001448281, 154: 0.001448281, 155:
0.001448281, 156: 0.001448281, 157: 0.001448281, 158: 0.001448281, 159: 0.001448281, 160: 0.001448281, 161: 0.001448281, 162:
0.001448281, 163: 0.001448281, 164: 0.001448281, 165: 0.001448281, 166: 0.001448281, 167: 0.001448281, 168: 0.001448281, 169:
0.001448281, 170: 0.001448281, 171: 0.001448281, 172: 0.001448281, 173: 0.001448281, 174: 0.001448281, 175: 0.001448281, 176:
0.001448281, 177: 0.001448281, 178: 0.001448281, 179: 0.001448281, 180: 0.001448281, 181: 0.001448281, 182: 0.001448281, 183:
0.001448281, 184: 0.001448281, 185: 0.001448281, 186: 0.001448281, 187: 0.001448281, 188: 0.001448281, 189: 0.00551956, 190: 0.00551956, 191: 0.00551956, 192: 0.00551956, 193: 0.00551956, 194: 0.00551956, 195: 0.00551956, 196: 0.00551956, 197: 0.00551956}, 'PERSPVALUE': {0:
27068207.53, 1: 16139432.33, 2: 16612880.78, 3: 15223154.23, 4: 13329725.56, 5: 12639283.46, 6: 14398548.59, 7: 26784197.78, 8: 17256618.07, 9: 11657837.22, 10: 12252501.6, 11: 24904672.14, 12: 10258771.29, 13: 11502035.81, 14: 11532813.52, 15: 17269205.53, 16: 12693599.88, 17: 14536926.96, 18: 9539792.21, 19: 7971501.616, 20: 8244881.149, 21: 6003459.601, 22: 4222915.124, 23: 20863174.85, 24: 11029584.79, 25: 7584126.22, 26: 15145416.28, 27: 7329721.345, 28: 12266029.43, 29: 5688784.226, 30: 4068513.751, 31: 15281888.13, 32: 11922537.91, 33: 4396013.28, 34: 2671760.764, 35: 1906603.424, 36: 3873159.464, 37: 13311419.88, 38: 5283934.11, 39: 11110692.34, 40: 9648885.591, 41: 6027654.746, 42: 6992837.358, 43: 4696371.296, 44: 4937007.527, 45: 5167548.583, 46: 1457331.046, 47: 4243265.898, 48: 5344537.717, 49: 5348237.625, 50: 2302969.738, 51: 3590748.252, 52: 4917922.812, 53: 6939780.743, 54: 3336948.716, 55: 2726471.252, 56: 6178289.029, 57: 2871203.944, 58: 3419346.8, 59: 2832834.938, 60: 5663559.289, 61: 3585861.103, 62: 3734039.93, 63: 3187926.465, 64: 4676672.934, 65: 4202429.132, 66: 825265.2121, 67: 2050863.214, 68: 2548953.176, 69: 4358778.251, 70: 2543793.804, 71: 3137277.456, 72: 3736864.886, 73: 1833556.979, 74: 2190284.487, 75: 1020392.457, 76: 3409046.421, 77: 3680362.683, 78: 3486760.876, 79: 3575292.65, 80: 3047082.934, 81: 3569162.709, 82: 2822371.667, 83: 3288314.142, 84: 2309749.76, 85: 274178.2925, 86: 2970113.437, 87: 2375593.126, 88: 2169592.635, 89: 2445757.474, 90: 1153270.295, 91: 843862.5591, 92: 1517770.688, 93: 3120120.296, 94: 1908922.549, 95: 949387.4377, 96: 555355.6563, 97: 1749621.443, 98: 1635296.659, 99: 1266107.641, 100: 1650184.057, 101: 1460167.669, 102: 1606946.205, 103: 1512397.297, 104: 1341212.516, 105: 894387.1565, 106: 1169059.447, 107:
1228485.862, 108: 369173.9589, 109: 960353.85, 110: 1022879.73, 111: 637366.6611, 112: 707716.8876, 113: 933317.7985, 114: 890590.3473, 115: 812629.496, 116: 671498.5074, 117: 648790.1261, 118: 738000.0, 119: 659490.5537, 120: 685486.6873, 121: 619717.8567, 122:
453714.5127, 123: 577421.4298, 124: 1142637.061, 125: 505567.7285, 126: 509675.9037, 127: 501422.4293, 128: 362900.5682, 129:
407749.7206, 130: 426971.0817, 131: 281477.1802, 132: 424598.9225, 133: 401336.4033, 134: 363427.0346, 135: 365667.4665, 136:
306451.1672, 137: 225000.0, 138: 230280.1425, 139: 297507.8831, 140: 67670518.82, 141: 40348580.81, 142: 41532201.95, 143: 38057885.58, 144: 33324313.91, 145: 31598208.66, 146: 35996371.47, 147:
66960494.46, 148: 43141545.17, 149: 29144593.06, 150: 30631253.99, 151: 62261680.34, 152: 25646928.23, 153: 28755089.53, 154: 28832033.8, 155: 43173013.82, 156: 31733999.71, 157: 36342317.41, 158:
23849480.52, 159: 19928754.04, 160: 20612202.87, 161: 15008649.0, 162: 52157937.13, 163: 27573961.96, 164: 18960315.55, 165: 37863540.7, 166: 18324303.36, 167: 30665073.58, 168: 14221960.57, 169: 38204720.33, 170: 29806344.78, 171: 10990033.2, 172: 33278549.69, 173: 13209835.28, 174: 27776730.85, 175: 24122213.98, 176: 15069136.87, 177: 17482093.4, 178: 11740928.24, 179: 12342518.82, 180: 12918871.46, 181:
13361344.29, 182: 13370594.06, 183: 12294807.03, 184: 17349451.86, 185: 15445722.57, 186: 14158898.22, 187: 11691682.34, 188:
10896945.63, 189: 135341037.6, 190: 80697161.63, 191: 83064403.89, 192: 133920988.9, 193: 86283090.34, 194: 124523360.7, 195:
86346027.65, 196: 104315874.3, 197: 76409440.66}, 'STDDEVI': {0: 5413641.505, 1: 3227886.465, 2: 3322576.156, 3: 3044630.846, 4: 2665945.113, 5: 2527856.693, 6: 2879709.718, 7: 5356839.557, 8: 3451323.613, 9: 2331567.445, 10: 2450500.32, 11: 4980934.427, 12: 2051754.258, 13: 2300407.162, 14: 2306562.704, 15: 3453841.106, 16: 2538719.977, 17: 2907385.393, 18: 1907958.442, 19: 1594300.323, 20: 1648976.23, 21: 1200691.92, 22: 844583.0249, 23: 4172634.97, 24: 2205916.957, 25: 1516825.244, 26: 3029083.256, 27: 1465944.269, 28: 2453205.886, 29: 1137756.845, 30: 813702.7502, 31: 3056377.626, 32: 2384507.582, 33: 879202.656, 34: 534352.1528, 35: 381320.6848, 36: 774631.8928, 37: 2662283.975, 38: 1056786.822, 39: 2222138.468, 40: 1929777.118, 41: 1205530.949, 42: 1398567.472, 43: 939274.2592, 44: 987401.5054, 45: 1033509.717, 46: 291466.2091, 47: 848653.1796, 48: 1068907.543, 49: 1069647.525, 50: 460593.9475, 51: 718149.6505, 52: 983584.5625, 53: 1387956.149, 54: 667389.7432, 55: 545294.2504, 56: 1235657.806, 57: 574240.7888, 58: 683869.36, 59: 566566.9876, 60: 1132711.858, 61: 717172.2206, 62: 746807.9859, 63: 637585.293, 64: 935334.5869, 65: 840485.8264, 66: 165053.0424, 67: 410172.6428, 68: 509790.6353, 69: 871755.6503, 70: 508758.7608, 71: 627455.4913, 72: 747372.9772, 73: 366711.3959, 74: 438056.8973, 75: 204078.4913, 76: 681809.2841, 77: 736072.5366, 78: 697352.1752, 79: 715058.5301, 80: 609416.5868, 81: 713832.5418, 82: 564474.3333, 83: 657662.8285, 84: 461949.9519, 85: 54835.65849, 86: 594022.6875, 87: 475118.6252, 88: 433918.5269, 89: 489151.4948, 90: 230654.059, 91: 168772.5118, 92: 303554.1375, 93: 624024.0593, 94: 381784.5097, 95: 189877.4875, 96: 111071.1313, 97: 349924.2887, 98: 327059.3317, 99: 253221.5283, 100: 330036.8114, 101: 292033.5338, 102: 321389.2409, 103: 302479.4595, 104: 268242.5032, 105: 178877.4313, 106: 233811.8894, 107:
245697.1723, 108: 73834.79179, 109: 192070.77, 110: 204575.946, 111: 127473.3322, 112: 141543.3775, 113: 186663.5597, 114: 178118.0695, 115: 162525.8992, 116: 134299.7015, 117: 129758.0252, 118: 147600.0, 119: 131898.1107, 120: 137097.3375, 121: 123943.5713, 122:
90742.90254, 123: 115484.286, 124: 228527.4122, 125: 101113.5457, 126: 101935.1807, 127: 100284.4859, 128: 72580.11363, 129: 81549.94411, 130: 85394.21633, 131: 56295.43605, 132: 84919.7845, 133: 80267.28067, 134: 72685.40692, 135: 73133.4933, 136: 61290.23344, 137: 45000.0, 138: 46056.02851, 139: 59501.57661, 140: 16917629.7, 141: 10087145.2, 142: 10383050.49, 143: 9514471.395, 144: 8331078.477, 145:
7899552.165, 146: 8999092.868, 147: 16740123.61, 148: 10785386.29, 149: 7286148.264, 150: 7657813.499, 151: 15565420.08, 152:
6411732.056, 153: 7188772.382, 154: 7208008.45, 155: 10793253.46, 156: 7933499.928, 157: 9085579.353, 158: 5962370.131, 159: 4982188.51, 160: 5153050.718, 161: 3752162.25, 162: 13039484.28, 163: 6893490.491, 164: 4740078.888, 165: 9465885.174, 166: 4581075.841, 167: 7666268.394, 168: 3555490.142, 169: 9551180.082, 170: 7451586.195, 171: 2747508.3, 172: 8319637.422, 173: 3302458.819, 174: 6944182.712, 175:
6030553.494, 176: 3767284.217, 177: 4370523.349, 178: 2935232.06, 179: 3085629.704, 180: 3229717.864, 181: 3340336.073, 182: 3342648.515, 183: 3073701.758, 184: 4337362.965, 185: 3861430.643, 186:
3539724.555, 187: 2922920.584, 188: 2724236.407, 189: 101505778.2, 190: 60522871.22, 191: 62298302.92, 192: 100440741.7, 193:
64712317.75, 194: 93392520.51, 195: 64759520.73, 196: 78236905.69, 197: 57307080.49}, 'STDDEVC': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0, 17: 0, 18: 0, 19: 0, 20: 0, 21: 0, 22: 0, 23: 0, 24: 0, 25: 0, 26: 0, 27: 0, 28: 0, 29: 0, 30: 0, 31: 0, 32: 0, 33: 0, 34: 0, 35: 0, 36: 0, 37: 0, 38: 0, 39: 0, 40: 0, 41: 0, 42: 0, 43: 0, 44: 0, 45: 0, 46: 0, 47: 0, 48: 0, 49: 0, 50: 0, 51: 0, 52: 0, 53: 0, 54: 0, 55: 0, 56: 0, 57: 0, 58: 0, 59: 0, 60: 0, 61: 0, 62: 0, 63: 0, 64: 0, 65: 0, 66: 0, 67: 0, 68: 0, 69: 0, 70: 0, 71: 0, 72: 0, 73: 0, 74: 0, 75: 0, 76: 0, 77: 0, 78: 0, 79: 0, 80: 0, 81: 0, 82: 0, 83: 0, 84: 0, 85: 0, 86: 0, 87: 0, 88: 0, 89: 0, 90: 0, 91: 0, 92: 0, 93: 0, 94: 0, 95: 0, 96: 0, 97: 0, 98: 0, 99: 0, 100: 0, 101: 0, 102: 0, 103: 0, 104: 0, 105: 0, 106: 0, 107: 0, 108: 0, 109: 0, 110: 0, 111: 0, 112: 0, 113: 0, 114: 0, 115: 0, 116: 0, 117: 0, 118: 0, 119: 0, 120: 0, 121: 0, 122: 0, 123: 0, 124: 0, 125: 0, 126: 0, 127: 0, 128: 0, 129: 0, 130: 0, 131: 0, 132: 0, 133: 0, 134: 0, 135: 0, 136: 0, 137: 0, 138: 0, 139: 0, 140: 0, 141: 0, 142: 0, 143: 0, 144: 0, 145: 0, 146: 0, 147: 0, 148: 0, 149: 0, 150: 0, 151: 0, 152: 0, 153: 0, 154: 0, 155: 0, 156: 0, 157: 0, 158: 0, 159: 0, 160: 0, 161: 0, 162: 0, 163: 0, 164: 0, 165: 0, 166: 0, 167: 0, 168: 0, 169: 0, 170: 0, 171: 0, 172: 0, 173: 0, 174: 0, 175: 0, 176: 0, 177: 0, 178: 0, 179: 0, 180: 0, 181: 0, 182: 0, 183: 0, 184: 0, 185: 0, 186: 0, 187: 0, 188: 0, 189: 0, 190: 0, 191: 0, 192: 0, 193: 0, 194: 0, 195: 0, 196: 0, 197: 0}, 'EXPVALUE': {0: 54136415.06, 1: 32278864.66, 2: 33225761.56, 3: 30446308.46, 4:
26659451.12, 5: 25278566.92, 6: 28797097.18, 7: 53568395.56, 8: 34513236.14, 9: 23315674.44, 10: 24505003.2, 11: 49809344.28, 12: 20517542.58, 13: 23004071.62, 14: 23065627.04, 15: 34538411.06, 16: 25387199.76, 17: 29073853.92, 18: 19079584.42, 19: 15943003.23, 20: 16489762.3, 21: 12006919.2, 22: 8445830.248, 23: 41726349.7, 24: 22059169.58, 25: 15168252.44, 26: 30290832.56, 27: 14659442.69, 28: 24532058.86, 29: 11377568.45, 30: 8137027.502, 31: 30563776.26, 32: 23845075.82, 33: 8792026.56, 34: 5343521.528, 35: 3813206.848, 36: 7746318.928, 37: 26622839.76, 38: 10567868.22, 39: 22221384.68, 40: 19297771.18, 41: 12055309.49, 42: 13985674.72, 43: 9392742.592, 44: 9874015.054, 45: 10335097.17, 46: 2914662.092, 47: 8486531.796, 48: 10689075.43, 49: 10696475.25, 50: 4605939.476, 51: 7181496.504, 52: 9835845.624, 53: 13879561.49, 54: 6673897.432, 55: 5452942.504, 56: 12356578.06, 57: 5742407.888, 58: 6838693.6, 59: 5665669.876, 60: 11327118.58, 61: 7171722.206, 62: 7468079.86, 63: 6375852.93, 64: 9353345.868, 65: 8404858.264, 66: 1650530.424, 67: 4101726.428, 68: 5097906.352, 69: 8717556.502, 70: 5087587.608, 71: 6274554.912, 72: 7473729.772, 73: 3667113.958, 74: 4380568.974, 75: 2040784.914, 76: 6818092.842, 77: 7360725.366, 78: 6973521.752, 79: 7150585.3, 80: 6094165.868, 81: 7138325.418, 82: 5644743.334, 83: 6576628.284, 84: 4619499.52, 85: 548356.585, 86: 5940226.874, 87: 4751186.252, 88: 4339185.27, 89: 4891514.948, 90: 2306540.59, 91: 1687725.118, 92: 3035541.376, 93: 6240240.592, 94: 3817845.098, 95: 1898774.875, 96: 1110711.313, 97: 3499242.886, 98: 3270593.318, 99: 2532215.282, 100: 3300368.114, 101: 2920335.338, 102: 3213892.41, 103: 3024794.594, 104: 2682425.032, 105: 1788774.313, 106: 2338118.894, 107: 2456971.724, 108: 738347.9178, 109: 1920707.7, 110: 2045759.46, 111: 1274733.322, 112: 1415433.775, 113: 1866635.597, 114: 1781180.695, 115:
1625258.992, 116: 1342997.015, 117: 1297580.252, 118: 1476000.0, 119: 1318981.107, 120: 1370973.375, 121: 1239435.713, 122: 907429.0254, 123: 1154842.86, 124: 2285274.122, 125: 1011135.457, 126: 1019351.807, 127: 1002844.859, 128: 725801.1364, 129: 815499.4412, 130:
853942.1634, 131: 562954.3604, 132: 849197.845, 133: 802672.8066, 134: 726854.0692, 135: 731334.933, 136: 612902.3344, 137: 450000.0, 138: 460560.285, 139: 595015.7662, 140: 135341037.6, 141: 80697161.62, 142: 83064403.9, 143: 76115771.16, 144: 66648627.82, 145: 63196417.32, 146: 71992742.94, 147: 133920988.9, 148: 86283090.34, 149: 58289186.12, 150: 61262507.98, 151: 124523360.7, 152: 51293856.46, 153:
57510179.06, 154: 57664067.6, 155: 86346027.64, 156: 63467999.42, 157: 72684634.82, 158: 47698961.04, 159: 39857508.08, 160: 41224405.74, 161: 30017298.0, 162: 104315874.3, 163: 55147923.92, 164: 37920631.1, 165: 75727081.4, 166: 36648606.72, 167: 61330147.16, 168: 28443921.14, 169: 76409440.66, 170: 59612689.56, 171: 21980066.4, 172: 66557099.38, 173: 26419670.56, 174: 55553461.7, 175: 48244427.96, 176: 30138273.74, 177: 34964186.8, 178: 23481856.48, 179: 24685037.64, 180: 25837742.92, 181: 26722688.58, 182: 26741188.12, 183: 24589614.06, 184:
34698903.72, 185: 30891445.14, 186: 28317796.44, 187: 23383364.68, 188: 21793891.26, 189: 270682075.2, 190: 161394323.3, 191:
166128807.8, 192: 267841977.8, 193: 172566180.7, 194: 249046721.4, 195: 172692055.3, 196: 208631748.6, 197: 152818881.3}, 'weight': {0:
0.003861004360956014, 1: 0.003861004360956014, 2: 0.003861004360956014, 3: 0.003861004360956014, 4: 0.003861004360956014, 5: 0.003861004360956014, 6: 0.003861004360956014, 7: 0.003861004360956014, 8: 0.003861004360956014, 9: 0.003861004360956014, 10: 0.003861004360956014, 11: 0.003861004360956014, 12: 0.003861004360956014, 13: 0.003861004360956014, 14: 0.003861004360956014, 15: 0.003861004360956014, 16: 0.003861004360956014, 17: 0.003861004360956014, 18: 0.003861004360956014, 19: 0.003861004360956014, 20: 0.003861004360956014, 21: 0.003861004360956014, 22: 0.003861004360956014, 23: 0.003861004360956014, 24: 0.003861004360956014, 25: 0.003861004360956014, 26: 0.003861004360956014, 27: 0.003861004360956014, 28: 0.003861004360956014, 29: 0.003861004360956014, 30: 0.003861004360956014, 31: 0.003861004360956014, 32: 0.003861004360956014, 33: 0.003861004360956014, 34: 0.003861004360956014, 35: 0.003861004360956014, 36: 0.003861004360956014, 37: 0.003861004360956014, 38: 0.003861004360956014, 39: 0.003861004360956014, 40: 0.003861004360956014, 41: 0.003861004360956014, 42: 0.003861004360956014, 43: 0.003861004360956014, 44: 0.003861004360956014, 45: 0.003861004360956014, 46: 0.003861004360956014, 47: 0.003861004360956014, 48: 0.003861004360956014, 49: 0.003861004360956014, 50: 0.003861004360956014, 51: 0.003861004360956014, 52: 0.003861004360956014, 53: 0.003861004360956014, 54: 0.003861004360956014, 55: 0.003861004360956014, 56: 0.003861004360956014, 57: 0.003861004360956014, 58: 0.003861004360956014, 59: 0.003861004360956014, 60: 0.003861004360956014, 61: 0.003861004360956014, 62: 0.003861004360956014, 63: 0.003861004360956014, 64: 0.003861004360956014, 65: 0.003861004360956014, 66: 0.003861004360956014, 67: 0.003861004360956014, 68: 0.003861004360956014, 69: 0.003861004360956014, 70: 0.003861004360956014, 71: 0.003861004360956014, 72: 0.003861004360956014, 73: 0.003861004360956014, 74: 0.003861004360956014, 75: 0.003861004360956014, 76: 0.003861004360956014, 77: 0.003861004360956014, 78: 0.003861004360956014, 79: 0.003861004360956014, 80: 0.003861004360956014, 81: 0.003861004360956014, 82: 0.003861004360956014, 83: 0.003861004360956014, 84: 0.003861004360956014, 85: 0.003861004360956014, 86: 0.003861004360956014, 87: 0.003861004360956014, 88: 0.003861004360956014, 89: 0.003861004360956014, 90: 0.003861004360956014, 91: 0.003861004360956014, 92: 0.003861004360956014, 93: 0.003861004360956014, 94: 0.003861004360956014, 95: 0.003861004360956014, 96: 0.003861004360956014, 97: 0.003861004360956014, 98: 0.003861004360956014, 99: 0.003861004360956014, 100: 0.003861004360956014, 101: 0.003861004360956014, 102: 0.003861004360956014, 103: 0.003861004360956014, 104: 0.003861004360956014, 105: 0.003861004360956014, 106: 0.003861004360956014, 107: 0.003861004360956014, 108: 0.003861004360956014, 109: 0.003861004360956014, 110: 0.003861004360956014, 111: 0.003861004360956014, 112: 0.003861004360956014, 113: 0.003861004360956014, 114: 0.003861004360956014, 115: 0.003861004360956014, 116: 0.003861004360956014, 117: 0.003861004360956014, 118: 0.003861004360956014, 119: 0.003861004360956014, 120: 0.003861004360956014, 121: 0.003861004360956014, 122: 0.003861004360956014, 123: 0.003861004360956014, 124: 0.003861004360956014, 125: 0.003861004360956014, 126: 0.003861004360956014, 127: 0.003861004360956014, 128: 0.003861004360956014, 129: 0.003861004360956014, 130: 0.003861004360956014, 131: 0.003861004360956014, 132: 0.003861004360956014, 133: 0.003861004360956014, 134: 0.003861004360956014, 135: 0.003861004360956014, 136: 0.003861004360956014, 137: 0.003861004360956014, 138: 0.003861004360956014, 139: 0.003861004360956014, 140: 0.005515718883454712, 141: 0.005515718883454712, 142: 0.005515718883454712, 143: 0.005515718883454712, 144: 0.005515718883454712, 145: 0.005515718883454712, 146: 0.005515718883454712, 147: 0.005515718883454712, 148: 0.005515718883454712, 149: 0.005515718883454712, 150: 0.005515718883454712, 151: 0.005515718883454712, 152: 0.005515718883454712, 153: 0.005515718883454712, 154: 0.005515718883454712, 155: 0.005515718883454712, 156: 0.005515718883454712, 157: 0.005515718883454712, 158: 0.005515718883454712, 159: 0.005515718883454712, 160: 0.005515718883454712, 161: 0.005515718883454712, 162: 0.005515718883454712, 163: 0.005515718883454712, 164: 0.005515718883454712, 165: 0.005515718883454712, 166: 0.005515718883454712, 167: 0.005515718883454712, 168: 0.005515718883454712, 169: 0.005515718883454712, 170: 0.005515718883454712, 171: 0.005515718883454712, 172: 0.005515718883454712, 173: 0.005515718883454712, 174: 0.005515718883454712, 175: 0.005515718883454712, 176: 0.005515718883454712, 177: 0.005515718883454712, 178: 0.005515718883454712, 179: 0.005515718883454712, 180: 0.005515718883454712, 181: 0.005515718883454712, 182: 0.005515718883454712, 183: 0.005515718883454712, 184: 0.005515718883454712, 185: 0.005515718883454712, 186: 0.005515718883454712, 187: 0.005515718883454712, 188: 0.005515718883454712, 189: 0.021021018241875224, 190: 0.021021018241875224, 191: 0.021021018241875224, 192: 0.021021018241875224, 193: 0.021021018241875224, 194: 0.021021018241875224, 195: 0.021021018241875224, 196: 0.021021018241875224, 197: 0.021021018241875224}})

该脚本通常运行良好,运行时间不到 10 秒左右 - 但是我希望能够为

xs
lim
输入多个参数,并且脚本开始变得相当慢。有什么办法可以加快速度吗

python profiling
1个回答
0
投票

表达式

no_clm = poisson.rvs(size=1)
超过一半的时间为 0(根据您的数据)。这意味着在这种情况下您可以跳过计算。下面的差异将计算速度从我的机器上的大约 20 秒提高到了 5.8 秒。

diff --git a/sim.py b/sim.py
index c4dd0c5..5b4a006 100644
--- a/sim.py
+++ b/sim.py
@@ -50,10 +50,12 @@ n_simulations = 10000
 xs = 5e6
 lim = 10e6
 
-result = np.empty((n_simulations))
+result = np.zeros((n_simulations))
 
 for i in range(n_simulations):
     no_clm = poisson.rvs(size=1)
+    if no_clm[0] == 0:
+        continue
     
     #simulate beta distribution  
© www.soinside.com 2019 - 2024. All rights reserved.