2015-06-26 29 views
1

我正在使用numpy.random.shuffle來打亂二進制數組(下面的代碼),但輸出不會顯得非常隨機。我期望有一個隨機的點陣分類,但最終的陣列看起來是一個半規則的破折號。這裏發生了什麼?numpy random.shuffle意外的結果

img = PIL.Image.open(image_path)   
array = numpy.array(img) 
# threshold image etc 
outim=PIL.Image.fromarray(array) 
outim.show() # generates left image (below) 

numpy.random.shuffle(array) 
outim=PIL.Image.fromarray(array) 
outim.show() # generates right image (below) 

enter image description here

回答

4

你洗牌的行而不是列。 numpy.random.shuffle僅對第一維重新排序其輸入。

洗牌整個事情,嘗試

shape = array.shape 
array = array.flatten() 
numpy.random.shuffle(array) 
array = array.reshape(shape) 
+0

你不需要洗牌後重塑呢? –

+0

嗯..謝謝或他的建議,但'.flatten()'似乎並沒有洗牌什麼 –

+0

@LakshayGarg謝謝,完成。 –