Как мне сделать, чтобы объединить 2 массива: 1 массив содержит строку, а другой массив содержит int64 - PullRequest
1 голос
/ 14 апреля 2019

Я с трудом пытаюсь объединить два массива с помощью numpy.Один из массивов имеет текст (string), а другой массив имеет числа (int64).

Как мне это сделать?

Используя np.concatenate(), установите все значения какстрока и нужно оба.

Я запускаю цикл for, чтобы определить гиперпараметры RandomForestClassifier ... когда цикл переходит к числам, выдает ошибку, так как ожидает чисел и получает строку'1' или '2'.

Я использую

np.concatenate((['auto'], np.arange(20, 120, 20)), axis=0, out=None)

и получаю

array(['auto', '20', '40', '60', '80', '100'], dtype='<U11')

Однако мне нужно

array(['auto', 20, 40, 60, 80, 100])

Ответы [ 2 ]

2 голосов
/ 14 апреля 2019

Один из объединяемых массивов должен иметь объект dtype для получения окончательного массива с типом объекта, который может содержать элементы с разнородными типами данных:

In [7]: np.concatenate((['auto'], np.arange(20, 120, 20).astype(object)), axis=0, out=None)
Out[7]: array(['auto', 20, 40, 60, 80, 100], dtype=object)

И если вам интересно, как Numpy определяет типы массивов, которые вы можете прочитать Как numpy определяет dtype объекта-массива и что это значит?

0 голосов
/ 14 апреля 2019

Хотя, возможно, это не лучшее решение, оно будет работать:

np.asarray(['auto'] + list(np.arange(20, 120, 20)), dtype=object)

Результат:

array(['auto', 20, 40, 60, 80, 100], dtype=object)

Проблема заключается в том, что вы комбинируете разные типы, и поэтому вам нужно сказать numpy, что все объекты разрешены как есть, без преобразования.

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