NumPy — популярная библиотека для числовых вычислений на Python. Давайте рассмотрим два распространенных метода массива, используемых в NumPy, и простые примеры, чтобы продемонстрировать их использование.

array.shape: возвращает форму массива в виде кортежа.

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
# Output: (2, 3)

Здесь форма выражается количеством строк и количеством столбцов (в двух измерениях).

array.reshape: возвращает массив с новой формой без изменения исходного массива.

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
# Output:
# [[1 2 3]
#  [4 5 6]]

array.reshape — это метод, который используется для изменения формы массива NumPy. Он принимает в качестве аргумента желаемую форму нового массива и возвращает новый массив с указанной формой. Размер нового массива должен соответствовать размеру исходного массива.

Если размеры исходного массива и новой формы несовместимы напрямую, NumPy выдает ошибку ValueError. Например, рассмотрим следующий код:

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape(2, 3)
print(b)
# Output:
# [[1 2 3]
#  [4 5 6]]

В этом примере исходный массив имеет размер 6, а новая форма — (2, 3). Размер нового массива равен 2 * 3 = 6, что равно размеру исходного массива, поэтому операция изменения формы выполнена успешно.

array.reshape работает и для двумерных массивов. Фактически, его можно использовать для изменения формы массивов любого количества измерений. Важно помнить, что размер нового массива должен соответствовать размеру исходного массива.

Вот пример использования array.reshape с двумерным массивом:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.reshape(3, 2)
print(b)
# Output:
# [[1 2]
#  [3 4]
#  [5 6]]

В этом примере исходный массив a имеет форму (2, 3), и мы преобразуем его в форму (3, 2). Размер нового массива b равен 3 * 2 = 6, что равно размеру исходного массива a, поэтому операция изменения формы выполнена успешно.

Однако если мы попытаемся преобразовать исходный массив в форму другого размера, возникнет ошибка ValueError.

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
try:
    b = a.reshape(3, 3)
except ValueError as e:
    print("Caught ValueError:", e)
# Output: Caught ValueError: cannot reshape array of size 6 into shape (3,3)

В этом примере исходный массив имеет размер 6, и мы пытаемся преобразовать его в форму (3, 3), которая имеет размер 3 * 3 = 9, что не равно размеру массива. исходный массив. В результате возникает ошибка ValueError.

Мы увидим больше этих нюансов в нашем следующем посте…