Spec-Zone.ru › NumPy 1.19

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API