我通过创建 for 循环随机删除数据数组的行并重新计算指标(总和)。在 for 循环的每次迭代中,我都会打乱数据并删除第一行值。然后我对剩余行中的值求和。对于每次迭代或运行,我想跟踪运行编号、剩余点的总和以及被删除的行。我通过为每次运行创建结果字典,然后将这些结果附加到列表中来实现此目的。但是,当我打印出结果字典列表时,运行编号和总和是正确的,但每个结果字典中已删除行的值似乎始终是上次运行中删除的行,而不是其特定的值跑步。
import random
import numpy as np
Points = np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4],[5,5,5,5],[6,6,6,6]])
index = 1
all_results = []
N = 5
for i in range(N):
np.random.shuffle(Points)
removed_row = Points[:index]
print(f'Removed row from run {i}: {removed_row}')
remaining_rows = Points[index:]
sum = np.sum(remaining_rows)
run_results = {'Run':i,"Sum of remaining points": sum ,"Removed row": removed_row}
all_results.append(run_results)
print(all_results)
#output
Removed row from run 0: [[2 2 2 2]]
Removed row from run 1: [[2 2 2 2]]
Removed row from run 2: [[4 4 4 4]]
Removed row from run 3: [[5 5 5 5]]
Removed row from run 4: [[4 4 4 4]]
[{'Run': 0, 'Sum of remaining points': 76, 'Removed row': array([[4, 4, 4, 4]])}, {'Run': 1, 'Sum of remaining points': 76, 'Removed row': array([[4, 4, 4, 4]])}, {'Run': 2, 'Sum of remaining points': 68, 'Removed row': array([[4, 4, 4, 4]])}, {'Run': 3, 'Sum of remaining points': 64, 'Removed row': array([[4, 4, 4, 4]])}, {'Run': 4, 'Sum of remaining points': 68, 'Removed row': array([[4, 4, 4, 4]])}]
正如您所看到的,它似乎总是使用最后一次运行的“removed_row”变量,而不是特定于运行的“removed_row”
侃侃无极
炎炎设计
白衣染霜花
相关分类