Пакет Python NumPy делает нарезку многомерных массивов ценным инструментом для манипулирования и анализа данных. Он позволяет эффективно извлекать подмножества данных и манипулировать ими из массивов, что делает его полезным навыком для любого программиста, инженера или специалиста по обработке данных.
Нарезка многомерных массивов Python
Нарезка — это метод удаления раздела массива, который часто используется для подмножества и изменения данных внутри массивов. В Python срез становится значительно более эффективным при использовании с многомерными массивами, поскольку его можно применять по нескольким осям.
Срез одномерного массива
В одномерном массиве NumPy нарезка выполняется с использованием нотации [start:stop:step].
Python3
import
numpy as np
matrix
=
np.array([[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
]])
# Slicing a subarray
# Get a 2x2 subarray
sub_matrix
=
matrix[
0
:
2
,
1
:
3
]
(sub_matrix)
Выход:
[1 2 3]
Нарезка многомерного массива
Теперь перейдем к нарезке многомерных массивов. Python NumPy позволяет независимо разрезать массивы по каждой оси. Это означает, что вы можете легко извлекать строки, столбцы или определенные элементы из многомерного массива.
Нарезка строк и столбцов Python
В этом примере мы разрезаем строки и столбцы.
Python3
import
numpy as np
matrix
=
np.array([[
1
,
2
,
3
,
4
],
[
5
,
6
,
7
,
8
],
[
9
,
10
,
11
,
12
]])
# Slicing with step
# Skip every other row and column
sliced_matrix
=
matrix[::
2
, ::
2
]
(sliced_matrix)
Выход
[1, 2, 3] [2 5 8]
Подмассивы нарезки Python
В этом примере мы вырезаем подмассивы из многомерного массива. Это полезно, когда мы хотим извлечь меньшую часть массива для дальнейшего анализа или манипуляций.
Python3
# Create a sample 2-D array (a list of lists)
matrix
=
[
[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
]
]
# Slicing using negative indexing to get the last row
last_row
=
matrix[
-
1
]
(
"Last Row:"
, last_row)
# Slicing using negative indexing to get the last element of the first row
last_element_first_row
=
matrix[
0
][
-
1
]
(
"Last Element of First Row:"
, last_element_first_row)
# Slicing using negative indexing to get the last two elements of the second row
last_two_elements_second_row
=
matrix[
1
][
-
2
:]
(
"Last Two Elements of Second Row:"
, last_two_elements_second_row)
Выход
[[2 3] [5 6]]
Нарезка с помощью Step в Python
В этом примере мы используем параметр шага при срезе многомерного массива, чтобы пропускать элементы вдоль каждой оси.
Python3
import
numpy as np
matrix
=
np.array([[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
]])
# Combining slicing along rows and columns
sub_matrix
=
matrix[
1
:
3
,
0
:
2
]
(sub_matrix)
Выход
[[ 1 3 ] [ 9 11 ]]
Нарезка с использованием отрицательной индексации в двумерном массиве
В этом примере мы используем отрицательную индексацию для разрезания двумерного массива.
Python3
import
numpy as np
# Create a 3-D NumPy array
array_3d
=
np.array([
[[
1
,
2
,
3
], [
4
,
5
,
6
], [
7
,
8
,
9
]],
[[
10
,
11
,
12
], [
13
,
14
,
15
], [
16
,
17
,
18
]],
[[
19
,
20
,
21
], [
22
,
23
,
24
], [
25
,
26
,
27
]]
])
# Display the original array
(
"Original 3-D Array:"
)
(array_3d)
# Slice the last row from each 2-D matrix
sliced_array
=
array_3d[:, :,
-
1
]
# Display the sliced array
(
"\nSliced 3-D Array (Last Row from Each 2-D Matrix):"
)
(sliced_array)
Выход
Last Row: [7, 8, 9] Last Element of First Row: 3 Last Two Elements of Second Row: [5, 6]
Разрез по нескольким осям в Python
В этом примере мы разрезаем данные по нескольким осям, чтобы извлечь определенные элементы из многомерных массивов.
Нарезка с использованием отрицательной индексации в трехмерном массиве
В этом примере мы сначала создаем трехмерный массив NumPy с именем array_3d. Затем мы используем отрицательную индексацию, чтобы вырезать последнюю строку из каждой двумерной матрицы в трехмерном массиве. Обозначение среза [:, :, −1] означает, что мы выбираем все элементы по первому и второму измерениям (строки и столбцы) и последний элемент по третьему измерению (последняя строка в каждой двумерной матрице).
Python3
import
numpy as np
# Create a 3-D NumPy array
array_3d
=
np.array([
[[
1
,
2
,
3
], [
4
,
5
,
6
], [
7
,
8
,
9
]],
[[
10
,
11
,
12
], [
13
,
14
,
15
], [
16
,
17
,
18
]],
[[
19
,
20
,
21
], [
22
,
23
,
24
], [
25
,
26
,
27
]]
])
# Display the original array
(
"Original 3-D Array:"
)
(array_3d)
# Slice the last row from each 2-D matrix
sliced_array
=
array_3d[:, :,
-
1
]
# Display the sliced array
(
"\nSliced 3-D Array (Last Row from Each 2-D Matrix):"
)
(sliced_array)
Выход
Original 3-D Array: [[[ 1 2 3] [ 4 5 6] [ 7 8 9]] [[10 11 12] [13 14 15] [16 17 18]] [[19 20 21] [22 23 24] [25 26 27]]] Sliced 3-D Array (Last Row from Each 2-D Matrix): [[ 3 6 9] [12 15 18] [21 24 27]]