Spec-Zone.ru › NumPy 1.13

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

Spec-Zone.ru

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