1 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
假設(shè)您的字段覆蓋了相同大小的條柱,則無(wú)需顯式定義條柱。 可以從簡(jiǎn)單的樓層劃分確定每個(gè)位置,因?yàn)槟烂總€(gè)箱子的大小。我建議使用總寬度(您傳入的內(nèi)容),而不是,如果您當(dāng)然知道范圍的預(yù)期大小。mask*_bin_idx1 / N1 - 0np.random.uniformx.max() - x.min()
x0 = 0 # or x.min()
x1 = 1 # or x.max()
x_bin = (x1 - x0) / N
x_bin_idx = ((x - x0) // x_bin).astype(int)
# ditto for y
這將比數(shù)字化更快,更簡(jiǎn)單,并且可以避免在開(kāi)始時(shí)出現(xiàn)額外的箱子。
對(duì)于大多數(shù)目的,您不需要 。90%的問(wèn)題(包括這個(gè)問(wèn)題)不應(yīng)該使用。如果您想要一種快速訪(fǎng)問(wèn) 和 的必要元素的方法,只需使用布爾掩碼即可。面具很簡(jiǎn)單np.wherewherexy
selction = mask[x_bin_idx, y_bin_idx].astype(bool)
如果已經(jīng)是布爾值(無(wú)論如何都應(yīng)該是布爾值),則表達(dá)式就足夠了。它會(huì)產(chǎn)生一個(gè)大小與 和 相同(與 和 大小相同的)數(shù)組,其中包含每個(gè)點(diǎn)的掩碼值。您可以將面罩用作maskmask[x_bin_idx, y_bin_idx]x_bin_idxy_bin_idxxy
x[selection] # Elements of x in mask
y[selection] # Elements of y in mask
如果你絕對(duì)需要整數(shù)索引,那么門(mén)檻不是你最好的選擇。where
indices = np.flatnonzero(selection)
或
indices = selection.nonzero()[0]
如果您的目標(biāo)只是從 中提取值,我建議將它們堆疊到單個(gè)數(shù)組中:xy
coords = np.stack((x, y), axis=1)
這樣,您不必應(yīng)用索引兩次,只需提取值即可
coords[selection, :]
或
coords[indices, :]
根據(jù) 和 的相對(duì)密度,布爾掩碼或線(xiàn)性索引可能更快。你將不得不對(duì)一些相關(guān)的案例進(jìn)行計(jì)時(shí),以獲得更好的直覺(jué)。maskxy
添加回答
舉報(bào)