我有两个相等长度的列表,一个是数据系列,另一个是时间序列.它们代表随时间测量的模拟值.
我想创建一个函数,从两个列表中随机删除一个设定的百分比或分数.即如果我的分数是0.2,我想从两个列表中随机删除20%的项目,但它们必须是相同的项目(每个列表中的相同索引)被删除.
例如,设n = 0.2(要删除20%)
a = [0,1,2,3,4,5,6,7,8,9]
b = [0,1,4,9,16,25,36,49,64,81]
Run Code Online (Sandbox Code Playgroud)
随机删除20%后,它们就变成了
a_new = [0,1,3,4,5,6,8,9]
b_new = [0,1,9,16,25,36,64,81]
Run Code Online (Sandbox Code Playgroud)
这种关系并不像示例那么简单,所以我不能只在一个列表上执行此操作,然后计算出第二个; 它们已经存在为两个列表.他们必须保持原始秩序.
谢谢!
import random
a = [0,1,2,3,4,5,6,7,8,9]
b = [0,1,4,9,16,25,36,49,64,81]
frac = 0.2 # how much of a/b do you want to exclude
# generate a list of indices to exclude. Turn in into a set for O(1) lookup time
inds = set(random.sample(list(range(len(a))), int(frac*len(a))))
# use `enumerate` to get list indices as well as elements.
# Filter by index, but take only the elements
new_a = [n for i,n in enumerate(a) if i not in inds]
new_b = [n for i,n in enumerate(b) if i not in inds]
Run Code Online (Sandbox Code Playgroud)