Понимание операций с индексами Python - PullRequest
0 голосов
/ 24 сентября 2018

Я не очень понимаю операции с индексами, вы можете объяснить, что делает эта строка:

train = data[ranks>=test_points]

в этой функции

def random_split(data,test_points):
 ranks = np.arange(data.shape[0])     
 np.random.shuffle(ranks)         
 train = data[ranks>=test_points]

 return train

Поэтому мне нужно разделить данные следующим образом:половина баллов за обучение, одна четверть за проверку и одну четверть за тестирование.Итак, я сделал это так:

def random_split(data,test_points):
 ranks = np.arange(data.shape[0])     
 np.random.shuffle(ranks)         
 train = data[ranks>=test_points]

 other = data[ranks<test_points]         
 test = other[ranks>=int(test_points/4)]
 valid = other[ranks<int(test_points/4)]  
 return train,test,valid

Это не работает, что не так?Можете ли вы помочь мне понять этот код?

1 Ответ

0 голосов
/ 24 сентября 2018

Проблема в том, что после other = data[ranks<test_points] переменные other и rank больше не имеют одинаковый размер, поэтому вы получаете ошибку.Вы можете использовать что-то вроде

  train_size = 500
  validation_size = 100

  train_set = data[:train_size]
  validation_set = data[train_size: train_size + validation_size]
  test_set = data[train_size + validation_size:]

Примечание. Индексирование в стиле x[ i < 10] специфично для numpy.Это не разрешено вообще Python.< перегружен для возврата логического массива, например

i = np.array([1, 3, 5, 4])
i <= 4 # return [True True False True]

Это называется логическое индексирование в numpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...