我想從二維Numpy數組的索引中取樣,因爲每個索引都由該數組內部的數字加權。我知道它的方式是numpy.random.choice
,但是它不會返回索引而是數字本身。有沒有這樣做的有效方式?從Numpy數組的索引採樣的有效方法?
這裏是我的代碼:
import numpy as np
A=np.arange(1,10).reshape(3,3)
A_flat=A.flatten()
d=np.random.choice(A_flat,size=10,p=A_flat/float(np.sum(A_flat)))
print d
看到這個:http://stackoverflow.com/a/10803136/553404小修改 – YXD
@MrE,但這意味着要製作一個額外的數組來存儲索引,對吧? – Cupitor
是的。我會保存'np.indices(A)'的輸出,平坦化結果(包括元組)和你的權重數組,使用鏈接的方法,然後你的結果由'flattened_indices_x [idx],flattened_indices [ IDX]'。編輯:其實你可以使用http://docs.scipy.org/doc/numpy/reference/generated/numpy.unravel_index.html來避免創建索引數組,並直接從'idx'和你的權重數組得到2d索引形狀。 – YXD