Python numpy random.shuffle的意外结果

Python numpy random.shuffle的意外结果,python,numpy,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

我正在使用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)

您已洗牌行,但未洗牌列。仅沿第一个维度重新排列其输入

要洗牌整个东西,请尝试

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

您已洗牌行,但未洗牌列。仅沿第一个维度重新排列其输入

要洗牌整个东西,请尝试

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

洗牌后你不需要重塑它吗?嗯。。谢谢你的建议,但是,Flatte似乎没有移动anything@ElConfuso展平不洗牌任何东西,它只是将数组重塑为一维数组。洗牌后不需要重塑它吗?嗯。。谢谢你的建议,但是,Flatte似乎没有移动anything@ElConfuso展平不洗牌任何东西,它只是将数组重塑为一维数组。