Сглаживание массивов Python: изучение разницы между методами Ravel и Flatten

В Python методы ravelи Flattenиспользуются для выравнивания многомерных массивов. Основное различие между ними заключается в способе обработки исходного массива и выделения памяти. Давайте рассмотрим оба метода и приведем несколько примеров кода:

  1. ravel: метод ravelвозвращает сглаженный массив, который по возможности разделяет память с исходным массивом. Это означает, что изменение сглаженного массива может повлиять на исходный массив, и наоборот. Вот пример:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened = arr.ravel()
print(flattened)
# Output: [1 2 3 4 5 6]
# Modifying the flattened array affects the original array
flattened[0] = 99
print(arr)
# Output: [[99  2  3]
#          [ 4  5  6]]
  1. Flatten: метод Flattenвозвращает новый сглаженный массив, создавая копию исходных данных. Это означает, что изменение сглаженного массива не повлияет на исходный массив. Вот пример:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened = arr.flatten()
print(flattened)
# Output: [1 2 3 4 5 6]
# Modifying the flattened array does not affect the original array
flattened[0] = 99
print(arr)
# Output: [[1 2 3]
#          [4 5 6]]

Дополнительные методы выравнивания массивов включают:

    Метод

  1. reshape: метод reshapeможно использовать для преобразования массива в одномерный массив без его фактического выравнивания. Вот пример:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped = arr.reshape(-1)
print(reshaped)
# Output: [1 2 3 4 5 6]
  1. Понимание списков. Если вы работаете с обычными списками Python вместо массивов NumPy, вы можете использовать понимание списка, чтобы сгладить список. Вот пример:
nested_list = [[1, 2, 3], [4, 5, 6]]
flattened_list = [item for sublist in nested_list for item in sublist]
print(flattened_list)
# Output: [1, 2, 3, 4, 5, 6]