IndexError: массивы, используемые в качестве индексов, должны быть целыми (или логическими) типами - PullRequest
0 голосов
/ 09 февраля 2019

Фон

У меня есть 4 массива Numpy 1 D длиной 107952899. Я комбинирую вышеупомянутый 1d как массив D и переставляю их порядка (107952899, 4) и сохраняю их data1.Я устанавливаю имена столбцов для моего массива.(e.g : data1[:, 0] = Index)

(Like above, 0th col - Index, 1st- Time, 2nd- Speed, 3rd col - Brake)

Я следил за процессом фильтрации, как скорость> 20 и Тормоз> 30, используя следующую команду.

data1 = data1[(Speed > 20) & (Brake > 30)]

Теперь data1 shape changed to (35778, 4)

Требование

Мне нужны верхние значения N в столбце Тормоз с соответствующим столбцом индекса.

(Так что я подумал о сортировке столбца с использованием argsort)

Что я пробовал

data1 = data1 [data1 [:, Brake].argsort()[::-1][: N]]

Решение проблем

Когда я выполнил это, я получил IndexError : arrays used as indices must be Integers (or boolean) type

Что я сделал после моей ошибки:

Мой dtype of data1 is float.Хотя я должен изменить весь массив на int.

Но столбец «Тормоз» содержит такие элементы, как [30.4,30.8,30.9 .....12.053,60.50]. Я не должен переходить на int, поскольку я хочу найти максимальный элемент.

Evenя попытался изменить dtype to int using astype, но проблема все еще не устранена

Запрос

Как исправить вышеуказанную ошибку, так что мое требование становится полным

...