numpy.reshape()

Функция numpy.reshape() меняет форму массива без изменения данных. Общее число элементов должно остаться прежним. По возможности возвращается view — изменения отражаются в исходном массиве.

Сигнатура

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

Параметры

  • a — входной массив.

  • newshape — целое или кортеж новых размеров. Одно из значений можно указать как -1 — NumPy вычислит его сам.

  • order — порядок чтения/записи ('C', 'F', 'A').

Возвращает

ndarray новой формы (view или копия).

Пример 1. Из вектора в матрицу

import numpy as np

a = np.arange(12)
print(np.reshape(a, (3, 4)))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

Пример 2. Использование -1

import numpy as np

a = np.arange(12)
print(a.reshape(2, -1))
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]

NumPy сам определит, что вторая ось = 6.

Пример 3. Распрямление через reshape(-1)

import numpy as np

M = np.array([[1, 2], [3, 4], [5, 6]])
print(M.reshape(-1))
[1 2 3 4 5 6]

Пример 4. Объединение R, G, B-каналов в пиксели

import numpy as np

# 6 значений: R0, G0, B0, R1, G1, B1
raw = np.array([255, 100, 50, 0, 200, 80], dtype=np.uint8)
pixels = raw.reshape(-1, 3)
print(pixels)
[[255 100  50]
 [  0 200  80]]

Пример 5. Order=“F“ — заполнение по столбцам

import numpy as np

a = np.arange(6)
print(np.reshape(a, (2, 3), order='F'))
[[0 2 4]
 [1 3 5]]

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.