Метод Python numpy.delete(array, object, axis = None) возвращает новый массив с удалением подмассивов вместе с указанной осью.
- Что такое функция Numpy delete() в Python?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры программирования
- Удаление элементов из одномерного массива
- Python Numpy: удаление элементов из 2D-массива
- Удаление строки
- Указание индекса для строки: obj
- Указание оси (размера): axis
- Удаление нескольких строк и столбцов
- Использование списка
- Использование slice
- Использование np.s_[]
- Заключение
Что такое функция Numpy delete() в Python?
Функция Numpy delete() в Python используется для удаления любого подмассива из массива вместе с указанной осью. Функция numpy delete() возвращает новый массив после выполнения операции удаления. Для одномерного массива она просто удаляет объект, который мы хотим удалить.
Синтаксис
|
1 |
numpy.delete(array, object, axis = None) |
Параметры
Функция Numpy delete() принимает три параметра:
- array: это входной массив.
- object: это может быть любое число или подмассив.
- axis: указывает ось, которая должна быть удалена из массива.
Возвращаемое значение
Функция numpy delete() возвращает массив, удаляя подмассив, который был упомянут во время вызова функции.
Примеры программирования

Удаление элементов из одномерного массива
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Importing numpy import numpy as np # We will create an 1D array # this will create an array with values 0 to 5 arr1 = np.arange(6) # Printing the array print("The array is: ", arr1) # Now we will call delete() function # To delete the element 3 object = 3 # 3 is to be deleted # here arr1 is the main array # object is the number which is to be deleted arr = np.delete(arr1, object) # Printing new array print("After deleting ", object, " new array is: ") print(arr) |
Выход:
|
1 2 3 |
The array is: [0 1 2 3 4 5] After deleting 3 new array is: [0 1 2 4 5] |
Объяснение:
В этой программе мы сначала создали одномерный массив, используя функцию numpy arange(). Затем мы напечатали исходный массив. Затем мы инициализировали значение, которое необходимо удалить из массива 1D в объектной переменной и вызвали функцию delete(), минуя объект в функции.
Обратите внимание, что мы не упомянули ось, когда вызывали функцию delete(), потому что в массиве 1D есть только одна ось, поэтому по умолчанию ось должна быть None. Однако в объекте мы дали значение 3, поэтому он удалил 3 из исходного массива, а затем вернул новый массив, который напечатали.
Python Numpy: удаление элементов из 2D-массива
Используя метод NumPy np.delete(), вы можете удалить любую строку и столбец из массива NumPy ndarray. Мы также можем удалить элементы из 2D-массива, используя функцию numpy delete(). См. следующий код.
|
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 28 29 30 31 32 |
# Importing numpy import numpy as np # We will create a 2D array # Of shape 4x3 arr1 = np.array([(1, 2, 3),(4, 5, 6),(7, 8, 9),(50, 51, 52)]) # Printing the array print("The array is: ") print(arr1) # Now we will call delete() function # To delete the subarray present in array # This indicates this will delete 3rd column # Of the array obj = 2 # 3rd column axis = 1 # column wise # here arr1 is the main array # object is the number which is to be deleted arr = np.delete(arr1, obj, axis) # Printing new array print("After deleting column wise new array is: ") print(arr) # Now we will delete 2nd row of the array arr = np.delete(arr, 1, 0) # Printing new array print("After deleting row wise new array is: ") print(arr) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
The array is: [[ 1 2 3] [ 4 5 6] [ 7 8 9] [50 51 52]] After deleting column wise new array is: [[ 1 2] [ 4 5] [ 7 8] [50 51]] After deleting row wise new array is: [[ 1 2] [ 7 8] [50 51]] |
Объяснение:
В этой программе мы объявили двумерный массив numpy размером 4×3, как видно из вывода.
Сначала мы хотели удалить 3-й столбец массива. Для этого передаем значение 2 в obj(obj = 2), поскольку индекс массива начинается с 0 и заданной оси = 1, что указывает на удаление столбца. Значит, он удалит 3-й столбец. Если мы дадим ось = 0, то он удалит 3-ю строку.
Однако мы удалили третий столбец, а затем напечатали новый массив. После этого мы хотим удалить 2-ю строку нового массива, поэтому передали 1 как значение объекта и ось = 0, потому что ось = 0 индексирует строку, а объект указывает, какую строку нужно удалить. Наконец, мы напечатали окончательный массив.
Удаление строки
Используя numpy.delete(), мы можем удалить всю строку из массива. См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, 1, 0) print('After removing second row') print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing second row [[ 0 1 2 3] [ 8 9 10 11]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Из вывода мы видим, что 2-я строка (obj = 1, ось = 0) удалена из массива.
Исходный массив не изменяется, и возвращается новая копия ndarray.
Указание индекса для строки: obj
Мы можем указать индекс (номер строки или номер столбца) для удаления во втором параметре obj. Индекс начинается с 0. Указание несуществующего индекса вызывает ошибку.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, 0, 0) print('After removing first row') print(a_del, '\n') a_del2 = np.delete(a, 2, 0) print('After removing third row') print(a_del2, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pyt python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing first row [[ 4 5 6 7] [ 8 9 10 11]] After removing third row [[0 1 2 3] [4 5 6 7]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Объяснение:
В приведенном выше примере мы удалили первую и третью строки массива. Индекс начинается с 0. Таким образом, 0 означает первую строку, а 2 означает третью строку.
Давайте передадим индекс, которого нет в массиве, и посмотрим на результат.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, 3, 0) print('After removing fourth row') print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] Traceback(most recent call last): File "app.py", line 6, in <module> a_del = np.delete(a, 3, 0) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py", line 4371, in delete "size %i" %(obj, axis, N)) IndexError: index 3 is out of bounds for axis 0 with size 3 |
Объяснение:
Мы указали несуществующий индекс; поэтому выдается ошибка.
Указание оси (размера): axis
Укажите ось (размер) для удаления в третьей оси параметра.
Номер оси начинается с 0. В случае двумерного массива строка является первым измерением(ось = 0), а столбец — вторым измерением(ось = 1). Указание несуществующего измерения вызывает ошибку.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, 1, 0) print('After removing second row') print(a_del, '\n') a_del2 = np.delete(a, 1, 1) print('After removing second column') print(a_del2, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing second row [[ 0 1 2 3] [ 8 9 10 11]] After removing second column [[ 0 2 3] [ 4 6 7] [ 8 10 11]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Давайте определим ось, которой нет в массиве, и посмотрим на результат.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, 1, 2) print('After removing second row') print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] Traceback(most recent call last): File "app.py", line 6, in <module> a_del = np.delete(a, 1, 2) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py", line 4300, in delete axis = normalize_axis_index(axis, ndim) numpy.AxisError: axis 2 is out of bounds for array of dimension 2 |
Итак, указание несуществующего измерения вызывает ошибку.
Удаление нескольких строк и столбцов
Несколько строк и столбцов можно удалить сразу, указав список или срез во втором параметре obj. Мы можем удалить сразу несколько строк и столбцов следующим образом.
- Используя список Python
- Используя фрагмент Python
- Используя np.s_[]
Использование списка
Укажите номера строк и номера столбцов в виде списка для удаления в массиве.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, [0, 3], 1) print('After removing first and fourth columns') print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing first and fourth columns [[ 1 2] [ 5 6] [ 9 10]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Если мы хотим удалить столбец, то нам нужно передать 1 в функцию np.delete(a, [0, 3], 1), и нам нужно удалить первый и четвертый столбец из массива. Итак, мы написали код np.delete(a, [0, 3], 1).
Также можно удалить несколько строк одновременно. См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') a_del = np.delete(a, [1, 2], 0) print('After removing second and third rows') print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing second and third rows [[0 1 2 3]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
В приведенном выше примере мы удалили вторую и третью строки из массива.
|
1 |
np.delete(a, [1, 2], 0) |
В приведенном выше коде мы передали 0, что означает, что нам нужно удалить строку или ось X.
Затем мы указали, что вторая и третья строки должны быть удалены. Индекс массива начинается с 0.
Использование slice
Также можно указать несколько строк и столбцов, используя срез, задающий диапазон с [start:stop:step].
Создайте объект среза с помощью slice() и укажите его в качестве второго параметра obj.
Это эквивалентно [:stop], если есть один аргумент, [start:stop], если есть два аргумента, и [start:stop:step], если есть три аргумента. Если вы хотите пропустить, укажите None явно.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') print('After removing first and second columns') a_del = np.delete(a, slice(2), 1) print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing first and second columns [[ 2 3] [ 6 7] [10 11]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Использование np.s_[]
Используйте numpy.s_[], если вы хотите писать в форме [start:stop:step].
Удалим первый и второй столбцы с помощью функции np.s_[]. Помните, что индекс массива начинается с 0.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np a = np.arange(12).reshape(3, 4) print(a, '\n') print('After removing first and second columns') a_del = np.delete(a, np.s_[:2], 1) print(a_del, '\n') print('Original Array') print(a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
python3 app.py [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] After removing first and second columns [[ 2 3] [ 6 7] [10 11]] Original Array [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] |
Заключение
Функция Numpy delete() используется для удаления одной строки или столбца, нескольких строк или столбцов в массиве. Мы также можем использовать фрагмент и список Python для удаления нескольких элементов (строк и столбцов). Мы видели много вариантов удаления в этом уроке. Я надеюсь, вы узнали много нового из этого краткого руководства.
