Индексирование массивов NumPy - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь выполнить парную загрузку, и у меня возникают некоторые проблемы при индексации примеров начальной загрузки.Я покажу краткий фрагмент кода, который соответствует проблеме, с которой я сталкиваюсь.Как мне индексировать образец, чтобы получить образец начальной загрузки?

Это данные:

Y = [1,4,2,5,3,2,4,6]
X = [1,2,3,4,3,1,5,2]

Прежде всего я создаю индекс:

ind = np.arange(len(X))

Во-вторыхЯ выполняю начальную загрузку для индекса:

ind_b = np.random.choice(ind, len(ind))

И, наконец, я пытаюсь отфильтровать обе переменные с помощью индекса начальной загрузки:

Y_b = Y[ind_b] 
X_b = X[ind_b]

При этом я получаю сообщение об ошибке:

TypeError: в скалярный индекс могут быть преобразованы только целочисленные скалярные массивы

Может кто-нибудь объяснить, как я могу сделать это правильно?

1 Ответ

1 голос
/ 03 апреля 2019

Проблема в том, что X и Y являются только Python list в этом случае.Если бы вы сделали type(Y), вы бы получили list.Поскольку вы индексируете в список с помощью np.array, Python не знает, что это такое, и выдает ошибку, потому что вы делаете недопустимые операции с list.Вместо этого вам нужно, чтобы X и Y также имели тип np.array

>>> ind_b
array([6, 2, 7, 4, 0, 5, 7, 0])
>>> np.array(Y)[ind_b]
array([4, 2, 6, 3, 1, 2, 6, 1])
>>> Y = np.array(Y)
>>> X = np.array(X)
>>> Y_b = Y[ind_b]
>>> Y_b
array([4, 2, 6, 3, 1, 2, 6, 1])
>>> X_b = X[ind_b]
>>> X_b
array([5, 3, 2, 3, 1, 1, 2, 1])

Быстрое решение состоит в том, чтобы изменить его так, чтобы назначения были:

Y = np.array([1,4,2,5,3,2,4,6])
X = np.array([1,2,3,4,3,1,5,2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...