簡體   English   中英

如何改組兩列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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM