python的numpy.random.choice(a, size=None, replace=True, p=None)函数
a
: 如果是一维数组,就表示从这个一维数组中随机采样;如果是int型,就表示从0到a-1这个序列中随机采样。
size
:是采样个数
replace
:True表示可以取相同数字(重复采样),False表示不可以取相同数字数组
p
:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
例子
从[0,1,2,3,4,5]
中采样3个元素
import numpy as np
print(np.random.choice(6,size=3,replace=False))# 随机结果
[0 4 3]
应用例子:分割数据集
对于一个10*3
的数据集,按比例6:4
分割数据集
import numpy as npnp.random.seed(0) # 设置随机种子data = np.random.randint(1,10,[10,3])
print(data)a_indices = np.random.choice(10, size=int(10*0.6), replace=False) # 获取数据的随机索引b_indices = list(set(range(10)) - set(a_indices))data_a = data[a_indices]
data_b = data[b_indices]
print(a_indices)
print(data_a)
print(b_indices)
print(data_b)
#随机结果
[[6 1 4][4 8 4][6 3 5][8 7 9][9 2 7][8 8 9][2 6 9][5 4 1][4 6 1][3 4 9]]
[4 2 7 9 0 6]
[[9 2 7][6 3 5][5 4 1][3 4 9][6 1 4][2 6 9]]
[8, 1, 3, 5]
[[4 6 1][4 8 4][8 7 9][8 8 9]]