Spec-Zone.ru › NumPy 1.21

numpy.reshape

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

Придаёт массиву новую форму, не изменяя его данные.

Параметры
aarray_like

Массив, который нужно переформировать.

newshapeint или кортеж из целых чисел

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

order{‘C’, ‘F’, ‘A’}, необязательно

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

Возвращает
reshaped_arrayndarray

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

См. также

ndarray.reshape

Эквивалентный метод.

Замечания

Не всегда возможно изменить форму массива без копирования данных. Если вы хотите, чтобы при копировании данных было выброшено исключение, вы должны назначить новую форму атрибуту shape массива:

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

Spec-Zone.ru

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