我有一个 41000x3 numpy 数组,我在下面的函数中将其称为“sortedlist”。第三列有一堆值,其中一些是重复的,另一些不是。我想从第三列(即 sortedlist[:,2])中抽取一个唯一值(无重复值)样本。我想我可以用 numpy.random.sample(sortedlist[:,2], sample_size) 轻松做到这一点。问题是我想返回的不仅是那些值,还有所有三列,在最后一列中,有我从 numpy.random.sample 获得的随机选择的值。
编辑:通过唯一值我的意思是我想选择只出现一次的随机值。所以如果我有一个数组:
array = [[0, 6, 2]
[5, 3, 9]
[3, 7, 1]
[5, 3, 2]
[3, 1, 1]
[5, 2, 8]]
我想选择第三列的 4 个值,我想得到类似 new_array_1 的东西:
new_array_1 = [[5, 3, 9]
[3, 7, 1]
[5, 3, 2]
[5, 2, 8]]
但我不想要像 new_array_2 这样的东西,其中第三列中的两个值是相同的:
new_array_2 = [[5, 3, 9]
[3, 7, 1]
[5, 3, 2]
[3, 1, 1]]
我有选择随机值的代码,但没有标准,它们不应该在第三列中重复。
samplesize = 100
rand_sortedlist = sortedlist[np.random.randint(len(sortedlist), size = sample_size),:]]
我试图通过做这样的事情来执行这个标准
array_index = where( array[:,2] == sample(SelectionWeight, sample_size) )
但我不确定我是否走在正确的轨道上。任何帮助将不胜感激!