当我重新排列这个数组时,它似乎保持不变。我错过了什么?我正在尝试创建一个由随机0和255组成的(6,4)数组:
import numpy as np
clr_values = [0,255]
ifslst = clr_values * 12
img_flat_sorted = np.array(ifslst)
img_2d_sorted = img_flat_sorted.reshape((6,4))
np.random.shuffle(img_2d_sorted)
img_2d_sorted似乎保持不变。我以为会是 Shuffle 。之前和之后一样。哪里出了问题?
array([[ 0, 255, 0, 255],
[ 0, 255, 0, 255],
[ 0, 255, 0, 255],
[ 0, 255, 0, 255],
[ 0, 255, 0, 255],
[ 0, 255, 0, 255]])
2条答案
按热度按时间lf3rwulv1#
它正在被 Shuffle ,但每一行都是一样的,它看起来没有变化。注意,数组只在第一维中进行混洗;即,在2D阵列中,其行被四处移动,但每行的内容保持原样。因为每一行都是
[0, 255, 0, 255]
,所以如果它们改变了位置,你永远不会知道。如果你想有相同数量的
0
和255
,但在随机位置,考虑 Shuffle 的1D数组,在reshape
之前。nhhxz33t2#
这里有一个基本的,未修改的函数来打乱2D数组中的所有值:
这个简单的函数简单地打乱了2D数组中每一行的所有值。然后,它对整个数组进行额外的 Shuffle 。这应该工作 Shuffle 的图像像素。注意,这个函数并没有创建一个255和0的数组,但是你的代码看起来是正确的。