use*_*432 8 python random performance numpy random-access
我需要从一个固定大小的集合中随机均匀地采样一个数字,进行一些计算,然后将新数字放回集合中.(所需的样本数量非常大)
我试图将数字存储在列表中并使用random.choice()来选择一个元素,将其删除,然后附加新元素.但那太慢了!
我想将数字存储在一个numpy数组中,对一个索引列表进行采样,并为每个索引执行计算.
Python列表在内部实现为阵列(如Java ArrayListS,C++ std::vectorS,等),所以去除从中间的元件是相对慢的:所有后续元件必须重新索引.(有关详细信息,请参阅http://www.laurentluce.com/posts/python-list-implementation/.)由于元素的顺序似乎与您无关,我建议您只是random.randint(0, len(L) - 1)选择索引i,然后用于L[i] = calculation(L[i])更新ith元素.