获取每个probList列表的总和并将其相乘 附加到L.然后L被排序以找到最高值。这是我的代码:
[[ 1.0 1.0 8.6 1.7]
[ 5.0 5.0 5.0 8.8]
[ 1.0 1.0 1.0 2.6]
...,
[ 1.0 1.0 8.3 ]
[ 1.0 1.0 5.3 1.8]
[ 1.0 5.0 4.6 7.]]
这似乎需要花费很多时间,因为len(probList)是
103665
probList的结构是(103665 x 4),看起来像这样:
[ 0. 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11
0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23
......
0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95
0.96 0.97 0.98 0.99]
w_dim,x_dim,z_dim的结构是:
[[0.0, 0.0, 0.0, 1.0],
[0.0, 0.0, 0.01, 0.98999999999999999],
[0.0, 0.0, 0.02, 0.97999999999999998],
[0.0, 0.0, 0.029999999999999999, 0.96999999999999997],
[0.0, 0.0, 0.040000000000000001, 0.95999999999999996]
[.....
[0.96999999999999997, 0.02, 0.0, 0.010000000000000009],
[0.97999999999999998, 0.0, 0.0, 0.020000000000000018],
[0.97999999999999998, 0.0, 0.01, 0.010000000000000009],
[0.97999999999999998, 0.01, 0.0, 0.010000000000000009],
[0.98999999999999999, 0.0, 0.0, 0.010000000000000009]]
值的结构是:
flight_schedule_detail_instance = FlightScheduleDetail.objects.filter
schedule_id=FlightSchedule.objects.filter(schedule_id=instance.schedule_id),
flight_date=str(tomorrow_date)
)
请建议我采用更优化的方法。
答案 0 :(得分:0)
为什么不使用矩阵点?
w_dim=np.arange(0.0, 1.0, 0.01).reshape(-1,1)
x_dim=np.arange(0.0, 1.0, 0.01).reshape(-1,1)
y_dim=np.arange(0.0, 1.0, 0.01).reshape(-1,1)
W = np.concatenate([w_dim, x_dim, y_dim], axis=1)
z = np.maximum(1 - np.sum(W, axis=1, keepdims=True), 0)
params = np.concatenate([W,z], axis=1)
result = probList * params
result_sum = np.sum(result, axis=1)
idx = result_sum.argsort()[::-1]
output = result[idx,:]