Spec-Zone.ru › NumPy 1.12

numpy.reshape

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

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

Параметры:

a : array_like

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

newshape : int или кортеж из целых чисел

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

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

Прочитайте элементы 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 make 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)
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]])

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.reshape.html

Spec-Zone.ru

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