首页 > 解决方案 > 如何从相同的元素中随机选择索引

问题描述

在 numpy 中,我有两个数组ab其中所有条目都是 1 或 0,我这样做c = a != b了,现在我想从中随机选择一个索引(意思ctrue,一个索引在哪里a并且b不同意),我该怎么做?

标签: pythonnumpy

解决方案


你可以np.random.choice()结合np.where().

输入:

>>> import numpy as np
>>> a = np.array([0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1])
>>> b = np.array([1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1])
>>> c =  a != b
>>> c
array([ True, False,  True, False, False,  True,  True,  True, False,
       False,  True, False])

例子:

>>> np.random.choice(np.where(c)[0], size=1).item()
7

细分:首先取其中的c索引True

>>> np.where(c)[0]
array([ 0,  2,  5,  6,  7, 10])

现在选择一个:

>>> np.random.choice(np.where(c)[0], size=1)
7

最后将第 0 个值作为标量使用.item().


推荐阅读