Spec-Zone.ru › NumPy 1.20

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-смежным в памяти, в противном случае — C-подобный.

Возвращает
reshaped_arrayndarray

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

См. также

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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.reshape.html

Spec-Zone.ru

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