【问题标题】:Partial random selection of items from numpy array from items that meet certain condition [duplicate]从满足特定条件的项目中从numpy数组中部分随机选择项目[重复]
【发布时间】:2017-11-04 10:47:08
【问题描述】:

我有一个相对于 double 数组创建的 bool 数组:

array1 = ... # the double array initialization
array2 = array1 < threshold # threshold is set somewhere else

假设我的第二个数组的输出是这样的:

# array2 = [True, False, True, True, True, False]

我想选择True 项目的百分比。例如,如果我想从 True 项中随机选择 75%,则输出将是以下任何一项:

# array3 = [True, False, True, True, False, False]
# array3 = [False, False, True, True, True, False]
# array3 = [True, False, False, True, True, False]

第三个数组包含在第二个数组中找到的 4 个 True 项中的 3 个。我怎样才能做到这一点?

【问题讨论】:

  • 要使用链接的,请执行:make_more_sparsey(a,int(np.round(len(idx)*(1-0.75))))。即使用函数实现中的idx
  • @Divakar 你从哪里得到我要求替换random 元素的想法?我想从True 元素中选择随机集。 “链接的问题”显然没有我需要的答案。
  • 它不是随机选择元素,而是从 True 元素中选择。请再次阅读问答。
  • @Divakar 我现在明白了,谢谢。

标签: python arrays numpy random


【解决方案1】:

所以,这实际上只是

的工作
  1. 获取向量中True 的所有索引 -> true_indices
  2. 洗牌true_indices
  3. true_indices = true_indices[0:len(true_indices)*3/4
  4. array3 = [False]*len(array2)
  5. array3[true_indices] = True

完成。所有这些“我需要从一组中随机选择一个固定数量”通常可以很好地转换为洗牌方法。

Numpy 带有一个shuffle 函数。

【讨论】:

  • 非常感谢。这是非常聪明的。无论如何,我的应用程序中有一个四维数组,当我得到索引时,我得到四个数组的tuple。我无法调整元组中数组的大小.. :(
  • 您不必调整大小 - 只需打乱索引向量并从中选择所需数量。
  • 感谢您的建议
猜你喜欢
  • 2022-11-23
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多