numpy提供了多种随机选取的方法,这里放三种方法,效果相同。
以从一个矩阵中随机抽取n行为例,写了三个函数,粗鄙代码,见笑
import numpy as np
#=================================================================================
def rand_row1(array,dim_needed): #array为需要采样的矩阵,dim_needed为想要抽取的行数
row_total = array.shape[0]
row_sequence = np.arange(row_total)
np.random.shuffle(row_sequence)
return array[row_sequence[0:dim_needed],:]
#=================================================================================
def rand_row2(array,dim_needed): #array为需要采样的矩阵,dim_needed为想要抽取的行数
row_total = array.shape[0]
row_sequence = np.random.permutation(row_total)
return array[row_sequence[0:dim_needed],:]
#=================================================================================
def rand_row3(array,dim_needed): #array为需要采样的矩阵,dim_needed为想要抽取的行数
row_total = array.shape[0]
row_sequence= np.random.choice(row_total,dim_needed,replace=False, p=None)
return array[row_sequence,:]
#=================================================================================
#=============================测试
test_data = np.array([0, 0])
for i in range(100):
test_data = np.vstack((test_data, [i+1, i+1]))
# print(test_data)
batch = rand_row1(test_data,20)
# batch = rand_row2(test_data,20)
# batch = rand_row3(test_data,20)
print(batch.shape,batch)
随机抽取n列与之类似,同志,共勉!