Spec-Zone.ru › NumPy 1.14

numpy.reshape

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

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

Параметры:

a : array_like

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

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

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

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

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

Возвращает:

reshaped_array : ndarray

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

См. также

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

Spec-Zone.ru

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