Выбор случайных индексов (строк) из двух массивов numpy, где строка из одного равна строке из другого массива

#python #arrays #numpy

Вопрос:

Учитывая два массива numpy ( X_test и y_test соответственно), такие как:

 [[-1.66666667 0. -1.66666667 ... -1.66666667 -1.66666667  3.13324923]  [-0.33333333 0. -0.33333333 ... -0.33333333 -0.33333333  0.23389657]  [ 0.33333333 0. 0.33333333 ... 0.33333333 0.33333333  0.52919895]  ...  [-0.33333333 0. -0.33333333 ... -0.33333333 -0.33333333  0.16159571]  [ 0.66666667 0. 0.66666667 ... 0.66666667 0.66666667  -0.84551518]  [-1.33333333 0. -1.33333333 ... -1.33333333 -1.33333333  -0.03224152]]  

 [[0 0 1 0 0 0 0]  [1 0 0 0 0 0 0]  [0 1 0 0 0 0 0]  ...  [0 1 0 0 0 0 0]  [0 0 0 0 0 1 0]  [1 0 0 0 0 0 0]]  

Я хочу выбрать случайные строки из каждого из двух массивов numpy X_test и y_test указать, где индексы совпадают , так как они взяты из тестового набора данных. Результат будет таким, что каждая строка из y_test будет равна каждой из строк в order массиве, так что результирующие массивы для нового набора тестов будут соответствовать порядку:

 order = [  [1, 0, 0, 0, 0, 0, 0],  [1, 0, 0, 0, 0, 0, 0],  [1, 0, 0, 0, 0, 0, 0]  ]  

ИЗМЕНИТЬ: Форма X_test такова (16659, 24) . В настоящее время я пытаюсь преобразовать оба массива numpy в фрейм данных, такой как:

 X_test_df = pd.DataFrame(data=X_test[0:,0:], index=[i for i in range(X_test.shape[0])]) # , columns=['f' str(i) for i in range(data.shape[1])]) y_test_df = pd.DataFrame(data=y_test[0:,0:], index=[i for i in range(y_test.shape[0])]) # , columns=['f' str(i) for i in range(data.shape[1])])  

а затем найдите случайную строку, для y_test которой соответствует каждая строка в order :

final_y = pd.concat([y_test_df[(y_test_df == k).any()].sample(1) for k in order])

Для примера ожидаемого результата давайте предположим, что случайно выбранные индексы, соответствующие строкам в order from y_test , являются 2, 15, 38 . Затем это изменит массивы X_test и y_test numpy, чтобы они включали только данные для индексов 2, 15, 38 .

Комментарии:

1. вы сначала говорите «случайный», затем говорите какой-то порядок, и вы вообще не показываете никаких попыток

2. определять where the indices match . x_test усекается в обоих измерениях, какова его форма?

3. Я обновил операцию, чтобы рассмотреть оба комментария.

4. Этот вопрос меня смущает. Можете ли вы добавить образец ожидаемого результата?

5. @user17242583 объясняет ли обновленный ОП лучше?