質問: 私は、下記のような100×3の行列リストを持っています。 ![画像の説明をここに入力](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つの値の数の塊として扱っています。
回答: まず適当な行列 ``` a = np.array([[m*3 + n for n in range(3)] for m in range(20)]) ``` があった時 ``` b = a[np.random.choice(a.shape[0], 8, replace=False), :] ``` でいけます。`a.shape[0]` で `a` の行サイズを取り出し `np.random.choice` でインデックスの乱数を作ります。`replace=False` が重複なしにするオプションです。これで `a[n,:]` という形で行を取り出すことが出来ます。