Spec-Zone.ru › NumPy 1.16

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

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

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

См. также

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)
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.16.1/reference/generated/numpy.reshape.html

Spec-Zone.ru

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