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