来自numpy random.shuffle的意外结果

时间:2015-06-26 16:53:43

标签: python numpy

我使用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

1 个答案:

答案 0 :(得分:4)

你已经洗牌但不是列。 numpy.random.shuffle仅在第一维上重新排序其输入。

要改变整个事情,请尝试

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