Skip to main content
 首页 » 编程设计

python之在python中改组数组

2025年05月04日10jyk

我有这个数组:

arr=[[1,1,1],[0,0,0],[0,0,0] 

我希望 1 随机分布在第二行、第三行和第一行。

例如,想要的结果是:

arr=[[1,1,0],[0,0,0],[0,1,0] or arr=[[1,0,0],[0,0,1],[0,1,0] 

但是,使用

np.random.shuffle(arr) 

结果是打乱行而不是元素。

请您参考如下方法:

用一个例子扩展我的评论,利用 itertools.chain和 random.shuffle - 因为 Lucas 已经提供了 numpy 解决方案:

import random 
from itertools import chain  
 
arr=[[1,1,0],[0,0,0],[0,1,0]]     
 
# make it a 1-dim list 
chained = list(chain.from_iterable(arr)) 
 
# shuffle it  
random.shuffle(chained) 
 
# repartition it again 
new = [chained[i:i+3] for i in range(0,9,3)] 
 
print(new) 

输出(多次尝试):

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