两列 Python 列表如何打乱顺序?
How can a two-column Python list be shuffled?
打乱 Python 列表很简单:
>>> import random
>>> random.seed(100)
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(a)
>>> a
[7, 1, 5, 6, 4, 3, 2]
如何打乱两列 Python 列表?
所以,具体来说,我有以下代表形式的列表:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
# ... etc.
]
您可以将其想象成一种数据形式,在一列中捕获事件的三个特征(三个高精度数字),并在第二列中包含事件编号。
我想打乱这个两列列表,以便打乱具有相应事件编号的事件。请注意,我不想打乱事件特征列表。因此,在此示例中,随机播放的结果可能如下所示:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
# ... etc.
]
可以看到事件顺序由1、2、3、4改为3、4、1、2
进行这种随机播放的好方法是什么?
Numpy 允许就地改组数组切片。
import numpy as np
a = np.array(a)
np.random.shuffle(a[1::2])
打乱 Python 列表很简单:
>>> import random
>>> random.seed(100)
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(a)
>>> a
[7, 1, 5, 6, 4, 3, 2]
如何打乱两列 Python 列表?
所以,具体来说,我有以下代表形式的列表:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
# ... etc.
]
您可以将其想象成一种数据形式,在一列中捕获事件的三个特征(三个高精度数字),并在第二列中包含事件编号。
我想打乱这个两列列表,以便打乱具有相应事件编号的事件。请注意,我不想打乱事件特征列表。因此,在此示例中,随机播放的结果可能如下所示:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
# ... etc.
]
可以看到事件顺序由1、2、3、4改为3、4、1、2
进行这种随机播放的好方法是什么?
Numpy 允许就地改组数组切片。
import numpy as np
a = np.array(a)
np.random.shuffle(a[1::2])