我有一个字符串和该字符串中每个位置的相关分数列表。如何删除该字符串中所有低于特定阈值的元素?
我可以创建一个使用列表中介的替代方法,并且看到了解决this problem one element at a time的答案,但是还没有看到可以按位置直接删除多个元素的方法。一次执行此操作的主要问题是将移动其余元素的位置。
>>> import string
>>> import numpy as np
>>> sequence = ''.join(np.random.choice(list(string.ascii_uppercase), 10))
>>> sequence
'BQJVESXZBW'
>>> scores = np.random.uniform(size=10)
>>> scores
[0.99023134, 0.21286886, 0.10760723, 0.50485956, 0.207736, 0.76909266, 0.62174588, 0.89416775, 0.60837875, 0.32754857]
>>> threshhold = 0.50
输出应删除第二,第三,第五和第十个元素,保留'BVSXZB'
答案 0 :(得分:3)
这是一种实现方法:
In [11]: scores
Out[11]:
array([0.00397126, 0.88897497, 0.06103467, 0.27202612, 0.50436342,
0.09516024, 0.92886696, 0.24499752, 0.40425165, 0.90589889])
In [12]: ''.join(ch for (ch, score) in zip(sequence, scores) if score >= threshold)
Out[12]: 'BFHC'