Spec-Zone.ru › NumPy 1.17

numpy.reshape

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

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

Параметры:
a : array_like

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

newshape : int or tuple of ints

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

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

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

Возвращает:
reshaped_array : ndarray

Это будет новый объект представления, если это возможно; в противном случае – копия. Нет гарантии размещения в памяти (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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.reshape.html

Spec-Zone.ru

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