Spec-Zone.ru › NumPy 1.11

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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.reshape.html

Spec-Zone.ru

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