如何选择列表中最低 10% 的数字?

Posted

技术标签:

【中文标题】如何选择列表中最低 10% 的数字?【英文标题】:How to choose the numbers which are lowest 10% in the list? 【发布时间】:2019-10-19 19:55:15 【问题描述】:

我想获得列表中最低 10% 的数字。

List = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

从上面的列表中,我期望得到结果。 结果 = [1,2] 这是列表中最低的 10%。

【问题讨论】:

排序得到 arr[: len(arr) // 10] ? 元素是独一无二的吗?如果输入是[1]*10 【参考方案1】:

result = List[:int(len(List)*0.1)]

【讨论】:

【参考方案2】:

如果每个元素都是唯一的,您可以简单地对数据进行排序和切片

l = list(range(1, 21))

number_value_to_get = len(l)//10
print(sorted(l)[:number_value_to_get]

但是,在大多数情况下,这是错误的,您可以使用 numpy 版本

import numpy as np

l = np.array(range(1, 21))
threshold = np.percentile(l, 10) # calculate the 10th percentile
print(l[l < threshold]) # Filter the list.

请注意需要定义这是否包含 10%

import numpy as np

l = np.array([1]*20)
threshold = np.percentile(l, 10)
print(l[l < np.percentile(l, 10)]) # Gives you empty list
print(l[l <= np.percentile(l, 10)]) # Gives you full list

【讨论】:

【参考方案3】:

试试这个 -

sorted(lis)[:int((0.1 * len(lis)))]

lis 是您的列表。

【讨论】:

【参考方案4】:
 # list of values
lstValues = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

# get maximum value out of list values
max = max(lstValues)

# calculate 10 percent out of max value
max /= 10

# print all the elements which are under the 10% mark
print([i for i in lstValues if i <= max])

【讨论】:

重载内置方法时要小心 重载方法是什么意思? 之后,您将无法再使用max(1, 2)。我的措辞可能是错误的 哦,我不知道。非常感谢! 我的荣幸! :)【参考方案5】:

如果你想使用 numpy,有一个内置的百分位函数:

import numpy

l = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])

print(l[l < numpy.percentile(l,10)])

【讨论】:

【参考方案6】:

给你 =^..^=

import numpy as np

List = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

percent = 10
values = list(sorted(np.asarray(List, dtype=np.int))[:int(len(List)/(100/percent))])

输出:

[1, 2]

【讨论】:

哦,我期待的是 [1,2]。真正的元素,而不是索引。【参考方案7】:
mylist=[int(x) for x in range(1,21)]
mylist.sort()
newlist=[]
for i in range(len(mylist)//10): #just index through the 10% elements with this
    newlist.append(mylist[i])
print(newlist)
        

【讨论】:

以上是关于如何选择列表中最低 10% 的数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式选择字母数字字符

VBA - 如何从一列中随机选择 10% 的行,确保它们不同并将 Y 放在 B 列中?

如何在 Python 中列出 n 个数字并随机选择任意数字?

如何根据下拉列表中的选定数字生成表单输入字段(选择)

如何从Python中的列表中选择“x”个唯一数字?

如何比较数字子列表中的第一项,如果重复,比较第二项并选择第二项最小的子列表?