我有一个向量 vec -it的长度是1774.我需要制作一个长度为10的向量 n ,其中包含10个< strong> vec ,类似的步骤如下:
n=[0, 178, 356, 534, 712, 890, 1068, 1246, 1424, 1602]
第一个和最后一个数字不必与 vec 相同。我的尝试:
# -*- coding: cp1250 -*-
from __future__ import division
newLength=10
vec=range(1774)
step=round(len(vec)/newLength);
n=range(0,len(vec),int(step))
print n
print len(n)
但它导致长度为11的向量。当我设置newLength = 22然后我得到22时。所以它是舍入的问题(我也尝试过math.ceil和math.floor-它适用于newLength = 10但是不适用于newLength = 554)。有没有其他方法如何获得向量 n ?
由于
答案 0 :(得分:1)
想一想:
代码:
new_length = 554
vector = # some list
step = len(vector)/new_length
n = (i*step for i in range(new_length))
new_vector = [vector[int(round(i))] for i in n]
答案 1 :(得分:0)
好的,这是解决方案。感谢jonrsharpe
from math import ceil
def takespread(sequence, num):
length = float(len(sequence))
for i in range(num):
yield sequence[int(ceil(i * length / num))]
if __name__=="__main__":
newLength=55
vec=range(1774)
print len(list(takespread(vec, newLength)))