Spec-Zone.ru › NumPy 1.18

numpy.reshape

numpy.reshape(a, newshape, order='C') [source]

Преобразование формы массива без изменения данных.

Параметры
aarray_like

Массив, подлежащий преобразованию формы.

newshapeint or tuple of ints

Новая форма должна быть совместима с исходной формой. Если целое число, то результат будет одномерным массивом такой длины. Один размер формы может быть -1. В этом случае значение определяется по длине массива и оставшимся размерам.

order{‘C’, ‘F’, ‘A’}, optional

Чтение элементов из a с использованием этого порядка индексов и размещение элементов в преобразованном массиве с использованием этого порядка индексов. ‘C’ означает чтение/запись элементов в стиле индексации C, где индекс последней оси меняется быстрее, а затем индекс первой оси меняется медленнее. ‘F’ означает чтение/запись элементов в стиле индексации Fortran, где первый индекс меняется быстрее, а последний индекс меняется медленнее. Обратите внимание, что опции ‘C’ и ‘F’ не учитывают расположение памяти в базовом массиве и относятся только к порядку индексации. ‘A’ означает чтение/запись элементов в порядке индексации Fortran, если a является Fortran-contiguous в памяти, в противном случае — в порядке C.

Возвращаемое значение
reshaped_arrayndarray

Если возможно, это будет новый объект представления; в противном случае — копия. Нет гарантии расположения памяти (C- или Fortran-contiguous) возвращаемого массива.

См. также

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 a non-contiguous array

Ключевое слово 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.18/reference/generated/numpy.reshape.html

Spec-Zone.ru

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