Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个Numpy随机洗牌不能相加_Python_Numpy - Fatal编程技术网

Python 多个Numpy随机洗牌不能相加

Python 多个Numpy随机洗牌不能相加,python,numpy,Python,Numpy,我试图生成一个邻域数组,每个邻域在一次随机洗牌(行洗牌或列洗牌)中不同于前一个邻域。仅当某一行或列的值超过K1时,才应生成邻居,如果是,则应使用该行或列的洗牌来生成邻居。洗牌应该是加法的,这意味着如果先洗牌一行,然后洗牌一列;应该生成两个邻居,一个是无序行,另一个是同时无序行和列 然而,数组似乎只被洗牌两次,一次用于列循环,一次用于行循环,洗牌次数不累加 在本例中,列索引1和2应该是无序的,行索引3和4应该是无序的。下面是一个示例输出,显示生成的邻居: [[0 0 0 1 1] [0 0 1

我试图生成一个邻域数组,每个邻域在一次随机洗牌(行洗牌或列洗牌)中不同于前一个邻域。仅当某一行或列的值超过K1时,才应生成邻居,如果是,则应使用该行或列的洗牌来生成邻居。洗牌应该是加法的,这意味着如果先洗牌一行,然后洗牌一列;应该生成两个邻居,一个是无序行,另一个是同时无序行和列

然而,数组似乎只被洗牌两次,一次用于列循环,一次用于行循环,洗牌次数不累加

在本例中,列索引1和2应该是无序的,行索引3和4应该是无序的。下面是一个示例输出,显示生成的邻居:

[[0 0 0 1 1]
 [0 0 1 0 0]
 [1 1 0 0 0]
 [0 1 1 1 0]
 [1 1 1 0 1]]

[[0 0 0 1 1]
 [0 0 1 0 0]
 [0 0 1 0 1]
 [0 1 1 1 0]
 [1 1 1 0 1]]

[[0 0 0 1 1]
 [0 0 1 0 0]
 [0 0 1 0 1]
 [0 1 1 1 0]
 [1 1 1 0 1]]

[[0 0 0 1 1]
 [0 0 1 0 0]
 [0 0 1 0 1]
 [0 1 1 1 0]
代码如下:

k=2
tmp = np.array([
 [0, 0, 0, 1, 1]
,[0, 0, 1, 0, 0]
,[1, 1, 0, 0, 0]
,[0, 1, 1, 1, 0]
,[1, 1, 1, 0, 1]
    ])

board = np.copy(tmp)
column = np.sum(board, axis=0)-k
columns = len(column)
row = np.sum(board, axis=1)-k
rows = len(row)
neighbors = []

for i in range(columns):
    if column[i] > 0:
        np.random.shuffle(board[:,i])
        neighbors.append(np.copy(board))

for i in range(rows):
    if row[i] > 0:
        np.random.shuffle(board[i,:])
        neighbors.append(np.copy(board))

print tmp
print column
print row
for i in neighbors:
    print i
谢谢

您的代码运行正常:)

只是有时候一行或一列被洗牌,但保持相同的配置。与之相比:

ar = np.array([0, 1])

for _ in range(10):
    print ar
    np.random.shuffle(ar)
此外,行或列的元素确实被洗牌的可能性不大,但最终还是会在完全相同的位置出现1和0(因为只有有限数量的唯一排列)