# https://stackoverflow.com/a/51915131/ @Divakar
def random_num_per_grp(L):
# For each element in L pick a random number within range specified by it
r1 = np.random.rand(np.sum(L)) + np.repeat(np.arange(len(L)),L)
offset = np.r_[0,np.cumsum(L[:-1])]
return r1.argsort()[offset] - offset
# a is input array
sidx = a.argsort()
c = np.bincount(a)
out = sidx[random_num_per_grp(c) + np.r_[0,c[:-1].cumsum()]]
整数标签的通用数的矢量化-
为了简化我们的例子,我们可以跳过
random_num_per_grp
最后一部分的抵消。因此,它将是-return r1.argsort()[offset]
,然后得到out
,它将是-sidx[random_num_per_grp(c)]
。你知道吗对于负片标签,只需按最小值偏移即可。你知道吗
您可以使用
np.where
和np.random.choice()
由于
np.where
返回一个元组,其中包含一个数组,因此要访问数组,需要访问元组的0索引。你知道吗1)在条件为真的情况下获取数字的索引(类别) 2) 从这些指数中随机选择
相关问题 更多 >
编程相关推荐