Преобразование формы массивов NumPy
- Предыдущая страница Форма массивов NumPy
- Следующая страница Итерация массивов 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.
- Предыдущая страница Форма массивов NumPy
- Следующая страница Итерация массивов NumPy