2016-01-19 97 views
0

我有很大的多維數組,例如2d裏面for循環。 我想在每次迭代時從這個數組中返回一個元素,並且此元素不應該返回。我的意思是在迭代中返回一個元素。如何從2 numpy數組中返回一個隨機元素而不重複?

+1

請顯示一些代碼,你已經嘗試了什麼,以及你卡在哪裏。 – Krease

+0

你最終會採取所有(或大部分)元素?即是等於(或接近)數組元素數的迭代次數? –

回答

1

沒有看到任何代碼,這是我會嘗試。

  • 做一個相同大小的二維數組只用布爾所有默認設置爲True(可用)
  • 當你的代碼隨機生成的二維數組的X,Y位置,首先檢查可用性數組:
    • 如果該位置的值爲True(可用),則在另一個Array中返回該值(無論存儲哪個值),然後將該可用值設置爲False。
    • 如果該位置的值爲False(不可用),請繼續嘗試數組中的下一個值,直到找到可用的值。 (做到這一點,而不是再次擊中隨機數發生器。越少的元素提供越多,你不得不「重新卷」最終將成爲痛苦的緩慢。)

有意義嗎?

編輯:我可以想到至少有2種其他方式可能會更快或更高效,但這是簡單的版本。

+0

非常感謝您能否告訴我是否有函數從2d數組中選擇一個元素 –

+0

我認爲您只需要執行'array [x] [y]'並返回位於數組中的x,y元素(或任何你已經命名你的陣列。) – Pretzel

+0

非常感謝分享 –

相關問題