从numpy数组中随机选择

时间:2017-04-19 21:56:44

标签: python arrays numpy

我有两个相关的numpy数组,Xy。我需要从n中选择X个随机行,并将其存储在一个数组中,相应的y值,并向其追加随机选择的点的索引。

我有另一个数组index,它存储了一个我不想采样的索引列表。

我该怎么做?

示例数据:

index = [2,3]
X = np.array([[0.3,0.7],[0.5,0.5] ,[0.2,0.8], [0.1,0.9]])
y = np.array([[0], [1], [0], [1]])

如果这些X是随机选择的(n=2):

randomylSelected = np.array([[0.3,0.7],[0.5,0.5]])

所需的输出是:

index = [0,1,2,3]
randomlySelectedY = [0,1]

我该怎么做?

2 个答案:

答案 0 :(得分:8)

您可以使用np.random.choice创建随机索引:

n = 2  # for 2 random indices
index = np.random.choice(X.shape[0], n, replace=False)  

然后您只需要使用结果索引数组:

x_random = X[index]
y_random = Y[index]

答案 1 :(得分:1)

只是将@MSeifert的答案包装在一个函数中:

def random_sample(arr: numpy.array, size: int = 1) -> numpy.array:
    return arr[np.random.choice(len(arr), size=size, replace=False)]

用法:

randomly_selected_y = random_sample(Y)