从numpy数组中随机选择

scu*_*nex 4 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]])
Run Code Online (Sandbox Code Playgroud)

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

randomylSelected = np.array([[0.3,0.7],[0.5,0.5]])
Run Code Online (Sandbox Code Playgroud)

期望的输出将是:

index = [0,1,2,3]
randomlySelectedY = [0,1]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

MSe*_*ert 13

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

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

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

x_random = X[index]
y_random = Y[index]
Run Code Online (Sandbox Code Playgroud)

  • 这里不需要`np.arange` (2认同)

Alo*_*man 9

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

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

用途:

randomly_selected_y = random_sample(Y)
Run Code Online (Sandbox Code Playgroud)

  • 说真的,为什么没有这个功能,这是一个常见的用例。很烦人。 (8认同)