В Python методы ravelи Flattenиспользуются для выравнивания многомерных массивов. Основное различие между ними заключается в способе обработки исходного массива и выделения памяти. Давайте рассмотрим оба метода и приведем несколько примеров кода:
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]]
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]]
Дополнительные методы выравнивания массивов включают:
-
Метод
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]
- Понимание списков. Если вы работаете с обычными списками 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]