2015-06-26 28 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谢谢,完成。 –