Преобразование фрагмента структурированного массива в обычный массив NumPy в NumPy 1.14.Python

Программы на Python
Ответить
Anonymous
 Преобразование фрагмента структурированного массива в обычный массив NumPy в NumPy 1.14.

Сообщение Anonymous »

Примечание 1. Ни один из ответов на этот вопрос не подходит в моем случае.

Примечание 2. Решение должно работать в NumPy 1.14.
Предположим, у меня есть следующий структурированный массив:

Код: Выделить всё

arr = np.array([(105.0, 34.0, 145.0, 217.0)], dtype=[('a', 'f4'), ('b', 'f4'), ('c', 'f4'), ('d', 'f4')])
.

Теперь я разбиваю структурированный тип данных следующим образом:

Код: Выделить всё

arr2 = arr[['a', 'b']]
И теперь я пытаюсь преобразовать этот фрагмент в обычный массив:

Код: Выделить всё

out = arr2[0].view((np.float32, 2))
что приводит к

Код: Выделить всё

ValueError: Changing the dtype of a 0d array is only supported if the itemsize is unchanged
Я хотел бы получить обычный массив, например:

Код: Выделить всё

[105.0, 34.0]
Обратите внимание, что этот пример упрощен, чтобы быть минимальным. В моем реальном случае использования я явно не имею дело с массивом, содержащим один элемент.

Я знаю, что это решение работает:

Код: Выделить всё

out = np.asarray(list(arr2[0]))
но я подумал, что должно быть более эффективное решение, чем копирование данных, которые уже находятся в массиве NumPy, в список, а затем обратно в массив. Я предполагаю, что есть способ остаться в NumPy и, возможно, вообще не копировать какие-либо данные, я просто не знаю, как это сделать.

Подробнее здесь: https://stackoverflow.com/questions/500 ... numpy-1-14
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»