Numpy reshape() может создавать многомерные массивы и получать другую математическую статистику. Numpy можно импортировать как import numpy as np. Метод np.reshape() придает новую форму массиву без изменения его элементов.
- Что такое функция np.reshape() в Python?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры с методом np.reshape()
- Пример 1
- Пример 2
- Как использовать метод ndarray.reshape() в Python
- Преобразование массива из 1D в 3D в Python
- Можем ли мы преобразовать массив в любую форму?
- Numpy reshape возвращает копию или представление?
- Прохождение неизвестного измерения
- Сведение массивов с помощью numpy reshape()
- Заключение
Что такое функция np.reshape() в Python?
numpy.reshape(array, shape, order = ‘C’) в Python — это математическая функция, которая изменяет форму массиву без изменения его данных. Функция np.reshape() принимает три аргумента и возвращает измененный массив. Для работы с функцией np.reshape() вам необходимо установить numpy для этого руководства.
Давайте посмотрим на синтаксис метода numpy reshape().
Синтаксис
|
1 |
numpy.reshape(a, newshape, order='C') |
Параметры
- array: отображает input_array, форма которого должна быть изменена.
- shape: представляет значение int или кортежи int.
- order: этот параметр представляет порядок операций. Это может быть либо C_contiguous, либо F_contiguous, где C-порядок управляет ростом строки в массиве, а F-порядок управляет операциями по столбцам.
Возвращаемое значение
Функция Numpy reshape() возвращает массив с новой формой, содержимое которого не изменилось.
Примеры с методом np.reshape()
Пример 1
Программа для демонстрации работы функции reshape().
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import numpy as np array = np.arange(6) print("Array Value: \n", array) # array reshaped with 3 rows and 2 columns array = np.arange(6).reshape(3, 2) print("Array reshaped with 3 rows and 2 columns : \n", array) # array reshaped with 2 rows and 3 columns array = np.arange(6).reshape(2, 3) print("Array reshaped with 2 rows and 3 columns : \n", array) |
Выход
|
1 2 3 4 5 6 7 8 9 |
Array Value: [0 1 2 3 4 5] Array reshaped with 3 rows and 2 columns : [[0 1] [2 3] [4 5]] Array reshaped with 2 rows and 3 columns : [[0 1 2] [3 4 5]] |
Объяснение.
В приведенном выше коде исходный массив был одномерным массивом.
Итак, в 1-й функции массив был изменен на 3 строки и 2 столбца. Во второй функции массив был изменен на 2 строки и 3 столбца.
Примечание.
В приведенной выше функции массив изменяется только тогда, когда размер массива равен произведению строк и столбцов. Если нет, то оболочка выдаст ошибку.
Пример 2
См. следующий код.
|
1 2 3 4 5 |
import numpy as np x = np.array([[21, 11, 19], [46, 18, 21]]) data = np.reshape(x,(2, -2)) print(data) |
Выход
|
1 2 |
[[21 11 19] [46 18 21]] |
Как использовать метод ndarray.reshape() в Python
В качестве примера возьмем следующий одномерный массив NumPy ndarray.
|
1 2 3 4 5 6 7 8 |
# app.py import numpy as np arr = np.arange(12) print('The array is:', arr) print('The shape of array is:', arr.shape) print('The dimension of array is:', arr.ndim) |
Выход
|
1 2 3 |
The array is: [ 0 1 2 3 4 5 6 7 8 9 10 11] The shape of array is:(12,) The dimension of array is: 1 |
Укажите преобразованную форму в виде списка или кортежа в первом аргументе метода reshape() для numpy.ndarray.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import numpy as np arr = np.arange(12) print('The array is:', arr) print('The shape of array is:', arr.shape) print('The dimension of array is:', arr.ndim) arr_3_4 = arr.reshape([3, 4]) print(arr_3_4) print('The dimension is: ', arr_3_4.ndim) print('The shape is: ', arr_3_4.shape) |
Выход
|
1 2 3 4 5 6 7 8 |
The array is: [ 0 1 2 3 4 5 6 7 8 9 10 11] The shape of array is:(12,) The dimension of array is: 1 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] The dimension is: 2 The shape is: (3, 4) |
Сначала мы определили массив, а затем распечатали форму и размер массива.
Затем мы преобразовали массив в форму [3, 4], а затем распечатали размер и форму массива. Если форма не соответствует количеству элементов в исходном массиве, будет выброшено ValueError.
Преобразование массива из 1D в 3D в Python
Сначала мы воспользуемся функцией np arange() для создания одномерного массива с элементами .9, а затем воспользуемся методом reshape() для преобразования массива в массив(3 x 3).
|
1 2 3 4 5 6 7 8 9 10 |
# importing the numpy module import numpy as np arr = np.arange(9) print('1D Array using arange() method \n', arr) print('\n') print('3D Array using reshape() method') data = arr.reshape(3, 3) print(data) |
Выход
|
1 2 3 4 5 6 7 8 |
1D Array using arange() method [0 1 2 3 4 5 6 7 8] 3D Array using reshape() method [[0 1 2] [3 4 5] [6 7 8]] |
Вы можете видеть, что мы создали одномерный массив с помощью метода arange(), а затем преобразовали этот массив в трехмерный массив с помощью метода reshape().
Можем ли мы преобразовать массив в любую форму?
Да, можем, если элементы, необходимые для изменения формы, одинаковы в обеих формах.
Мы можем преобразовать 8-элементный 1D-массив в 4 элемента в 2-строчном 2D-массиве, но мы не можем преобразовать его в 3-элементный 3-строчный 2D-массив, для которого потребовалось бы 3×3 = 9 элементов.
Давайте попробуем преобразовать одномерный массив с 8 элементами в двумерный массив с тремя элементами в каждом измерении.
|
1 2 3 4 5 6 7 8 |
# importing the numpy module import numpy as np arr = np.arange(8) newarr = arr.reshape(3, 3) print(newarr) |
Выход
|
1 2 3 4 |
Traceback(most recent call last): File "app.py", line 6, in <module> newarr = arr.reshape(3, 3) ValueError: cannot reshape array of size 8 into shape(3,3) |
Мы получили ValueError: невозможно преобразовать массив размера 8 в форму (3,3).
Итак, если вы хотите изменить форму массива, убедитесь, что умножение измерения равно длине массива.
Numpy reshape возвращает копию или представление?
Метод Numpy reshape() возвращает исходный массив, поэтому он возвращает представление.
|
1 2 3 4 5 6 |
# importing the numpy module import numpy as np arr = np.arange(8) print(arr.reshape(2, 4).base) |
Выход
|
1 |
[0 1 2 3 4 5 6 7] |
Вы можете видеть, что он возвращает исходный массив. Итак, это взгляд.
Прохождение неизвестного измерения
В numpy reshape() вам разрешено иметь одно «неизвестное» измерение. Это означает, что вам не нужно указывать точное число для одного из измерений в методе изменения формы.
Передайте -1 в качестве значения, и NumPy рассчитает это число за вас.
|
1 2 3 4 5 6 7 8 |
# importing the numpy module import numpy as np arr = np.arange(8) newarr = arr.reshape(2, 2, -1) print(newarr) |
Выход
|
1 2 3 4 5 |
[[[0 1] [2 3]] [[4 5] [6 7]]] |
Пожалуйста, имейте в виду, что мы не можем передать -1 более чем одному измерению.
Сведение массивов с помощью numpy reshape()
Сглаживание массива означает преобразование многомерного массива в одномерный массив.
Для этого мы можем использовать reshape(-1).
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# importing the numpy module import numpy as np arr = np.array([[11, 21, 31], [46, 52, 62]]) print('The array is: \n', arr) print('The dimension is: ', arr.ndim) print('\n') newarr = arr.reshape(-1) print('After reshaping, The array is: \n', newarr) print('After reshaping, the dimension is: ', newarr.ndim) |
Вывод
Вы можете видеть, что мы определили 2D-массив, а затем преобразовали этот 2D-массив в 1D-массив, используя метод reshape(). Наконец, мы напечатали его размеры, используя свойство ndim numpy.
Заключение
В функции numpy.reshape() укажите исходный numpy.ndarray в качестве первого аргумента и форму для преобразования во второй аргумент в виде списка или кортежа.
Если форма не соответствует количеству элементов в исходном массиве, произойдет ошибка ValueError.
