如何在 Python 中随机排列多个列表或数组?
How to shuffle several lists or arrays in Python?
假设我有一个列表 A
并将其打乱:
import random
random.shuffle(A)
现在我要使用相同的排列来洗牌 seconf 列表 B
,就像 shuffle
应用于 A
一样。
怎么可能?
pandas呢?
使用 pandas,您将置换索引:
df = pd.DataFrame(np.random.choice(list('abcde'), size=(10, 2)), columns = list('AB'))
df
Out[39]:
A B
0 c e
1 b e
2 c e
3 a d
4 e d
5 d d
6 b b
7 a e
8 e b
9 a b
使用 frac=1
进行采样会得到随机数据帧:
df.sample(frac=1)
Out[40]:
A B
6 b b
5 d d
1 b e
2 c e
9 a b
8 e b
4 e d
7 a e
3 a d
0 c e
您可以 zip
在洗牌之前将列表解压缩。它的内存效率不是特别高(因为您实际上是在随机播放期间复制列表)。
a = [1,2,3]
b = [4,5,6]
c = zip(a, b)
random.shuffle(c)
a, b = zip(*c)
您可以随机排列索引列表:
import random
def reorderList(l, order):
ret = []
for i in order:
ret.append(l[i])
return ret
order = random.shuffle(range(len(a)))
a = reorderList(a, order)
b = reorderList(b, order)
假设我有一个列表 A
并将其打乱:
import random
random.shuffle(A)
现在我要使用相同的排列来洗牌 seconf 列表 B
,就像 shuffle
应用于 A
一样。
怎么可能?
pandas呢?
使用 pandas,您将置换索引:
df = pd.DataFrame(np.random.choice(list('abcde'), size=(10, 2)), columns = list('AB'))
df
Out[39]:
A B
0 c e
1 b e
2 c e
3 a d
4 e d
5 d d
6 b b
7 a e
8 e b
9 a b
使用 frac=1
进行采样会得到随机数据帧:
df.sample(frac=1)
Out[40]:
A B
6 b b
5 d d
1 b e
2 c e
9 a b
8 e b
4 e d
7 a e
3 a d
0 c e
您可以 zip
在洗牌之前将列表解压缩。它的内存效率不是特别高(因为您实际上是在随机播放期间复制列表)。
a = [1,2,3]
b = [4,5,6]
c = zip(a, b)
random.shuffle(c)
a, b = zip(*c)
您可以随机排列索引列表:
import random
def reorderList(l, order):
ret = []
for i in order:
ret.append(l[i])
return ret
order = random.shuffle(range(len(a)))
a = reorderList(a, order)
b = reorderList(b, order)