当前位置: 首页 > 编程笔记 >

python list等分并从等分的子集中随机选取一个数

钱选
2023-03-14
本文向大家介绍python list等分并从等分的子集中随机选取一个数,包括了python list等分并从等分的子集中随机选取一个数的使用技巧和注意事项,需要的朋友参考一下

有些时候我们需要从视频序列中均匀的随机采样,我们可以每隔x步进行一次采样,这就要求对一个list每隔x步进行一次截取,再从截取到的不同的子集中随机选取一个数就是我们平均采样的帧的idx。

import random

def split(a, n):
  k, m = divmod(len(a), n)
  return [a[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in list(range(n))]

list_split = split(list(range(15)), 3)
print(list_split)
tmp = [random.choice(i) for i in list_split]
print(tmp)

结果:

list_split====>
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]

tmp====>
[0, 6, 12]

 python list 平均 分割 等分

应用场景:根据线程数,分割任务列表;

####功能:将listhtml" target="_blank">对象N等分
def div_list(ls,n):
 if not isinstance(ls,list) or not isinstance(n,int):
 return []
 ls_len = len(ls)
 if n<=0 or 0==ls_len:
 return []
 if n > ls_len:
 return []
 elif n == ls_len:
 return [[i] for i in ls]
 else:
 j = ls_len/n
 k = ls_len%n
 ### j,j,j,...(前面有n-1个j),j+k
 #步长j,次数n-1
 ls_return = []
 for i in xrange(0,(n-1)*j,j):
  ls_return.append(ls[i:i+j])
 #算上末尾的j+k
 ls_return.append(ls[(n-1)*j:])
 return ls_return

if 0:
 print div_list(3,3)
 print div_list([3],'3')
 print div_list([3],-1)
 print div_list([],2)
 print div_list([3],2)
 print div_list([3,4,5,6],4)
 print div_list([3,4,5,6,7,8,9,10,11,12,13,14,15],3)

到此这篇关于python list等分并从等分的子集中随机选取一个数的文章就介绍到这了,更多相关python list等分内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 问题内容: 我已经阅读了[将列表切成n个几乎相等长度的分区重复问题的答案。 这是公认的答案: 我想知道,如何修改这些解决方案,以便将项目随机分配给分区而不是增量分配。 问题答案: 对列表进行分区之前先对其进行调用。

  • 问题内容: 如何从集合中选择随机元素?我对从Java中的HashSet或LinkedHashSet中选择随机元素特别感兴趣。也欢迎使用其他语言的解决方案。 问题答案:

  • 问题内容: 我目前有n个Python集合,其中n> =0。是否有快速的1或2行Python解决方案来做到这一点?例如,该集合将如下所示: 目标是从上面选择2个随机项目,并且上面的集合可能包含0、1个或更多项目。我可以想到的唯一方法是将集合转换为列表(可变),从那里我可以访问集合长度内的2个随机唯一索引。 问题答案: 使用模块:http : //docs.python.org/library/ran

  • 问题内容: 我想要一个集合,并且其元素具有与之关联的概率,因此当我从集合中随机选择一个元素时,分布遵循与元素关联的概率。我想在一个非常小的Java应用程序中使用它,该应用程序存储了我要观看的电影列表,因此我可以向我推荐一部随机电影(否则我总是要花几个小时才能挑选一部电影)。对于每部电影,我都希望将向其推荐电影的次数与该电影的推荐次数成反比,该次数与从该列表中为下一个建议中挑选电影的可能性成反比。

  • 我在python中工作,试图将数字1800分解成三个随机因子。我并不真正关心输出的格式。我可以使用一个元组,一个列表,甚至三个独立的变量数。我也不关心让所有的因素都得到同样的重视。我的输出可能是2,2450或12,15,10或其他任何东西。 我最好的想法是使用素数分解(2,2,2,3,3,5,5),创建三个随机子集,并将每个子集中的项相乘。我研究了多种方法,它们似乎都有一些问题。 来自scikit

  • 问题内容: 我有一个数字值数组,我想从该数组中随机选择一个值,然后将其插入变量中。 我不确定您需要查看什么代码。所以, 这是我用来生成13个数字(1-13)并将其插入到数组中的循环。 效果很好,但是现在我需要从该数组中选择2个随机值(然后将其插入变量中,以备后用。 我到过很多网站,已经看到了类似的事情,例如将值插入到数组中,然后用于从数组中选择值,然后从数组中删除它。但是,无论何时我使用它都行不通