我有一个二维值数组,需要先屏蔽该数组的某些元素(索引取自约 100k 元组对的列表),然后再从剩余元素中抽取随机样本而不进行替换。
我需要既快速/高效(希望避免 for 循环)又具有较小内存占用的东西,因为实际上主数组约为 20000 x 20000。
现在我会满足于类似的东西(用于说明):
xys=[(1,2),(3,4),(6,9),(7,3)]
gxx,gyy=numpy.mgrid[0:100,0:100]
mask = numpy.where((gxx,gyy) not in set(xys)) # The bit I can't get right
# Now sample the masked array
draws=numpy.random.choice(master_array[mask].flatten(),size=40,replace=False)
幸运的是,现在我不需要绘制通量的 x,y 坐标 - 但如果您知道一种有效的方法来一步完成这一切,那就加分了(即,我可以先识别这些坐标,然后使用它们来获取相应的 master_array 值;上图是一个快捷方式)。
Thanks!
相关问题:
基于值是否在其他列表中的 Numpy 掩码 https://stackoverflow.com/questions/13629061/numpy-mask-based-on-if-a-value-is-in-some-other-list
基于索引掩码 numpy 数组 https://stackoverflow.com/questions/18860664/mask-numpy-array-based-on-index
二维数组的 numpy in1d 实现? https://stackoverflow.com/questions/16210738/numpy-in1d-for-2d-arrays