是否可以修改numpy.random.choice函数以使其返回所选元素的索引?
基本上,我想创建一个列表,随机选择元素而不需要替换
import numpy as np >>> a = [1,4,1,3,2,4] >>> np.random.choice(a) >>> 4 >>> a >>> [1,4]
a.remove(np.random.choice(a))将使用它遇到的值(上面的示例中的[1])删除列表的第一个元素,这可能不是所选元素(例如,[7 ]).
解决方法
这里有一种方法可以找出随机选择的元素的索引:
import random # plain random module,not numpy's random.choice(list(enumerate(a)))[0] => 4 # just an example,index is 4
或者您可以在一个步骤中检索元素和索引:
random.choice(list(enumerate(a))) => (1,4) # just an example,index is 1 and element is 4