2016-01-19 55 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

非常感谢分享 –

相关问题