リストからランダムにデータを取り出して新たなデータリストを作りたい


私は、下記のような100×3の行列リストを持っています。

[![画像の説明をここに入力](https://i.stack.imgur.com/UmUKm.png)](https://i.stack.imgur.com/UmUKm.png)

この行列に対して行いたい処理は2つあります。

・ランダムに2つの行を抽出することを、任意の回数(例えば、3回)行いたい  
ex) [[a1, a2, a3],  
[b1, b2, b3]]  
・抽出した2つの行を1つの行になるように変更して、試行した回数×取り出した行の組という行列を作りたい  
[[a1, a2, a3, b1, b2, b3],  
[c1, c2, c3, d1, d2, d3],  
[e1, e2, e2, f1, f2, f3]]

追記  
最初の100×3の行列では、1行分の値、つまり、3つの値の数の塊として扱っています。




まず適当な行列

[code]

    a = np.array([[m*3 + n for n in range(3)] for m in range(20)])
    
[/code]

があった時

[code]

    b = a[np.random.choice(a.shape[0], 8, replace=False), :]
    
[/code]

でいけます。`a.shape[0]` で `a` の行サイズを取り出し `np.random.choice`
でインデックスの乱数を作ります。`replace=False` が重複なしにするオプションです。これで `a[n,:]`
という形で行を取り出すことが出来ます。

