This question already has answers here:
Choose m evenly spaced elements from a sequence of length n
(5个答案)
5年前关闭。
我有一个向量向量,它的长度是1774。我需要做一个长度为10的向量n,它包含10个向量,步骤类似于:
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吗?
谢谢

最佳答案

想想看:
你有1774个苹果。
你想把苹果分成554个大小相等的组。
组大小必须为1774/554=3.261。
你把小组的人数缩小到3人。
得到1774//3=591个组。
你看这是错的。
你决定取而代之,得到4分。
得到1774//4=443个组。
你也知道这是错误的。
你知道你一定能吃到.261个苹果。
你写代码就是为了方便。
你决定开一个派对,因为你现在有1774//3.261=544个小组!
代码:

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]

关于python - 如何省略数组中的某些值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23710430/

10-12 07:21