Python-n個の要素をランダムに選択

参照リンク https://blog.csdn.net/weixin_44633882/article/details/103748747 

 

Pythonはリストまたはnumpy.ndarray内のn個の要素をランダムに選択します

1.リストから要素をランダムに選択します

  • random.choice(data)
import random
data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
random.choice(data) # 随机选取一个元素

2.リストから複数の要素をランダムに選択します

import random
data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
sample_num = 5
random.sample(data, sample_num) # 结果['a', 'd', 'b', 'f', 'c'],每次运行结果不同。

3.データとラベルから複数の要素をランダムに選択します

データセットを作成する場合、データの50%のみを使用する必要がある場合があるため、元のデータセットからランダムに30%のデータをサンプリングします。これも必要でdataありそれにlabel対応します。次に、私のアプローチについて話します。インデックスリストを作成し、インデックスリストからN個のインデックスを選択し、これらのインデックスに従ってデータを抽出し、データにラベルを付けます。

import random
data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
label = [0, 1, 2, 3, 4, 5, 6, 7]
sample_num = int(0.5 * len(data)) # 假设取50%的数据

sample_list = [i for i in range(len(data))] # [0, 1, 2, 3, 4, 5, 6, 7]
sample_list = random.sample(sample_list, sample_num) #随机选取出了 [3, 4, 2, 0]
sample_data = [data[i] for i in sample_list] # ['d', 'e', 'c', 'a']
sample_label = [label[i] for i in label] # [3, 4, 2, 0]

4.numpy.ndarrayから複数の要素をランダムに選択します

3.のみ実施しdata対象となるそれを削除する方法labelスライスを知っている人は皆それを知っている必要があります。ここで簡単に書きます。numpy.ndarraysample_list
numpy.ndarray

import numpy as np
data = np.array([[ 0,  1,  2,  3],
                 [ 4,  5,  6,  7],
                 [ 8,  9, 10, 11],
                 [12, 13, 14, 15]]) # shape:(4,4)
label = np.array([1,2,3,4]) # shape:(4,)

sample_num = int(0.5 * len(data)) # 假设取50%的数据
sample_list = [i for i in range(len(data))] # [0, 1, 2, 3]
sample_list = random.sample(sample_list, sample_num) # [1, 2]

data = data[sample_list,:] # array([[ 4,  5,  6,  7], [ 8,  9, 10, 11]])
label = label[sample_list] # array([2, 3])

 

おすすめ

転載: blog.csdn.net/katrina1rani/article/details/108714800