【发布时间】:2013-11-08 21:57:18
【问题描述】:
我正在寻找一种方法来实现类似于这个问题R: repeat elements of a list based on another list 中提出的问题,但在 python 中。
基本上我有三个相同长度的列表:
a = [0.9935,0.1955,1.3165,0.0975,0.2995,-0.0075,1.5015,1.0055,0.4525,0.2235,1.3815,0.4195,1.3685,0.0325,0.0055,0.6175,0.0615,1.8115]
b = [4.01,5.207,-0.245,5.312,0.841,1.204,-0.413,4.398,5.309,1.149, -0.295,1.903,-0.851,1.236,1.39,3.48,-0.034,4.286]
c = [0.221, 0.423, 0.125, 0.228, 0.233, 0.235, 0.244, 0.249, 0.265, 0.265, 0.268, 0.268, 0.275, 0.299, 0.301, 0.316, 0.318, 0.329]
我想根据c 中存储的浮点数乘以 10(四舍五入到最接近的整数)在 a 和 b 中生成新的重复项。例如,a 和 b 中的第一个元素必须重复 2 次,因为 c 中的第一个元素是 0.221 并且
int(round(c[0]*10.),0) = 2
所以新的a_2 和b_2 列表中的前两个元素如下所示:
a_2 = [0.9935, 0.9935, ...]
b_2 = [4.01, 4.01, ...]
将此应用于a 和b 中的前三个项目将导致:
a_2 = [0.9935, 0.9935, 0.1955, 0.1955, 0.1955, 0.1955, 1.3165, ...]
b_2 = [4.01, 4.01, 5.207, 5.207, 5.207, 5.207, -0.245, ...]
因为c[1]=0.423 和c[2]=0.125 意味着a 和b 中的第二项和第三项需要分别重复4 和1 次。
添加
为了完整起见,我会提到这个问题与另一个问题How to obtain a weighted gaussian filter 中给出的答案有关。因此,这是使其他问题的答案起作用的一个组成部分。
【问题讨论】: