Как преобразовать массив из dtype = объекта в dtype = np.int - PullRequest
0 голосов
/ 02 сентября 2018

В настоящее время я получил массив

arr = array([array([ 2,  7,  8, 12, 14]), array([ 3,  4,  5,  6,  9, 10]),
   array([0, 1]), array([11, 13])], dtype=object)

Как я могу преобразовать его в array([[ 2, 7, 8, 12, 14], [ 3, 4, 5, 6, 9, 10], [0, 1], [11, 13]])?

Я пытался arr.astype(np.int), но не смог

1 Ответ

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

dtype для массива массивов всегда будет object. Это неизбежно, потому что в NumPy в непрерывном блоке памяти можно хранить только неровные n -мерные массивы.

Обратите внимание, что ваши составляющие массивы уже имеют int dtype:

arr[0].dtype  # dtype('int32')

Обратите внимание, что ваша логика будет работать для массива без неровностей:

arr = np.array([np.array([ 2,  7,  8]),
                np.array([ 3,  4,  5])], dtype=object)

arr = arr.astype(int)

arr.dtype  # dtype('int32')

Фактически, в этом случае массив массивов свернут в массив single :

print(arr)

array([[2, 7, 8],
       [3, 4, 5]])

Для вычислений с зубчатым массивом массивов вы можете увидеть некоторые преимущества в производительности по сравнению со списком списков, но преимущество может быть ограничено. См. Также Как мне составлять векторы различной длины в NumPy?

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