В моем наборе данных я около 200 строк, но для минимального рабочего, например, давайте предположим, что следующий массив:Удаление строк в отдельных индексов из Numpy массива
arr = np.array([[1,2,3,4], [5,6,7,8],
[9,10,11,12], [13,14,15,16],
[17,18,19,20], [21,22,23,24]])
я могу взять случайную выборку из 3 строк следующим образом:
indexes = np.random.choice(np.arange(arr.shape[0]), int(arr.shape[0]/2), replace=False)
Используя эти индексы, я могу выбрать мои тестовые случаи следующим образом:
testing = arr[indexes]
Я хочу для удаления строк в этих индексах, и я могу использовать оставшиеся элементы для моего набора тренировок.
От должности here, кажется, что training = np.delete(arr, indexes)
должен это сделать. Но вместо этого я получаю 1d-массив.
Я также пробовал предложение here с использованием training = arr[indexes.astype(np.bool)]
, но это не дало четкого разделения. Я получаю элемент [5,6,7,8] в наборах для обучения и тестирования.
training = arr[indexes.astype(np.bool)]
testing
Out[101]:
array([[13, 14, 15, 16],
[ 5, 6, 7, 8],
[17, 18, 19, 20]])
training
Out[102]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Любая идея, что я делаю неправильно? Благодарю.
Не подделывать t [прочитать документы] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.delete.html); в документации есть ответ на ваш вопрос. – user2357112