numpy.reshape
-
numpy.reshape(a, newshape, order='C')[source] -
Преобразует массив в новый вид без изменения данных.
- Параметры
-
-
aarray_like -
Массив, который нужно преобразовать.
-
newshapeint or tuple of ints -
Новая форма должна быть совместима с исходной формой. Если целое число, то результатом будет одномерный массив указанной длины. Один размер формы может быть -1. В этом случае значение определяется по длине массива и оставшимся размерам.
-
order{‘C’, ‘F’, ‘A’}, optional -
Чтение элементов
aс использованием этого порядка индексов и размещение элементов в преобразованном массиве с использованием этого порядка индексов. ‘C’ означает чтение/запись элементов в порядке индексов языка Си, где индекс последнего измерения изменяется быстрее, до индекса первого измерения, который изменяется медленнее. ‘F’ означает чтение/запись элементов в порядке индексов языка Фортран, где индекс первого измерения изменяется быстрее, а индекс последнего измерения — медленнее. Обратите внимание, что варианты ‘C’ и ‘F’ не учитывают расположение памяти в базовом массиве и относятся только к порядку индексации. ‘A’ означает чтение/запись элементов в порядке индексов языка Фортран, еслиaрасположен в памяти по типу Fortran, в противном случае — в порядке Си.
-
- Возвращает
-
-
reshaped_arrayndarray -
Если возможно, будет создан новый объект представления; в противном случае — копия. Нет гарантии форматирования памяти (по типу Си или Фортран) возвращаемого массива.
-
См. также
-
ndarray.reshape -
Эквивалентный метод.
Замечания
Не всегда возможно изменить форму массива без копирования данных. Если вы хотите, чтобы при копировании данных генерировалось исключение, вам следует присвоить новую форму атрибуту формы массива:
>>> a = np.zeros((10, 2)) # A transpose makes the array non-contiguous >>> b = a.T # Taking a view makes it possible to modify the shape without modifying # the initial object. >>> c = b.view() >>> c.shape = (20) Traceback (most recent call last): ... AttributeError: Incompatible shape for in-place modification. Use `.reshape()` to make a copy with the desired shape.
Ключевое слово
orderопределяет порядок индексов как для извлечения значений изa, так и для размещения значений в выходном массиве. Например, предположим, что у вас есть массив:>>> a = np.arange(6).reshape((3, 2)) >>> a array([[0, 1], [2, 3], [4, 5]])Можно представить преобразование формы как сначала разворачивание массива (используя заданный порядок индексов), а затем вставку элементов из развернутого массива в новый массив с использованием того же порядка индексов, что и при разворачивании.
>>> np.reshape(a, (2, 3)) # C-like index ordering array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering array([[0, 4, 3], [2, 1, 5]]) >>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F') array([[0, 4, 3], [2, 1, 5]])Примеры
>>> a = np.array([[1,2,3], [4,5,6]]) >>> np.reshape(a, 6) array([1, 2, 3, 4, 5, 6]) >>> np.reshape(a, 6, order='F') array([1, 4, 2, 5, 3, 6])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2 array([[1, 2], [3, 4], [5, 6]])
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.reshape.html