Преобразование формы массивов NumPy

Перераспределение массива

Перераспределение означает изменение формы массива.

Формат массива является количеством элементов в каждой размерности.

С помощью перераспределения мы можем добавить или удалить размерности или изменить количество элементов в каждой размерности.

Перераспределение из 1-D в 2-D

Пример

Преобразуйте следующий 1-D массив с 12 элементами в 2-D массив.

Внешний размер будет иметь 4 массива, каждый из которых содержит 3 элемента:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)

Запуск примера

Перераспределение из 1-D в 3-D

Пример

Преобразуйте следующий 1-D массив с 12 элементами в 3-D массив.

Внешний размер будет иметь 2 массива, содержащие 3 массива, каждый из которых содержит 2 элемента:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)

Запуск примера

Можем ли мы重塑 в любую форму?

Да, если количество элементов, необходимых для重塑ки, одинаково в обоих форматах.

Мы можем重塑 8-элементный 1D массив в 2 строки 2D массива с 4 элементами, но мы не можем重塑 его в 3 элемента 3 строки 2D массива, так как это потребует 3x3 = 9 элементов.

Пример

Попытка преобразовать 1D массив с 8 элементами в 2D массив с 3 элементами в каждой размерности (это вызовет ошибку):

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)

Запуск примера

Возврат копии или вида?

Пример

Проверьте, является ли возвращаемый массив копией или видом:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)

Запуск примера

Пример выше возвращает исходный массив, поэтому это является видом.

Неизвестное измерение

Вы можете использовать "неизвестное" измерение.

Это означает, что вам не нужно указывать точное число для одного из измерений в методе reshape.

Переносимые -1 NumPy будет для вас вычислять это число в качестве значения.

Пример

Преобразовать 1D массив из 8 элементов в 3D массив с 2x2 элементами:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)

Запуск примера

Комментарий:Мы не можем преобразовать -1 Переносимые в несколько измерений.

Сглаживание массивов

Сглаживание массивов (Flattening the arrays) означает преобразование многомерных массивов в 1D массивы.

Мы можем использовать reshape(-1) Чтобы сделать это.

Пример

Преобразовать массив в 1D массив:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

Запуск примера

Комментарий:Есть много функций, которые можно использовать для изменения формы массивов flatten, ravel, и для перестановки элементов rot90, flip, fliplr, flipud и т.д. Эти функции относятся к среднему и высокому уровню numpy.