【发布时间】:2014-10-21 12:28:45
【问题描述】:
我有一个二维值数组,需要屏蔽该数组的某些元素(索引取自约 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 值;上图是一个捷径)。
谢谢!
相关问题:
Numpy mask based on if a value is in some other list
【问题讨论】: