Numpy delete: как удалить подмассив из массива в Python

Метод Python numpy.delete (array, object, axis = None) возвращает новый массив с удалением подмассивов вместе с упомянутой осью.

Numpy delete ()

Функция Numpy delete () используется для удаления любого подмассива из массива вместе с упомянутой осью . Функция numpy delete () возвращает новый массив после выполнения операции удаления. Для одномерного массива он просто удаляет объект, который мы хотим удалить.

Синтаксис

 numpy.  delete (array, object, axis = None) 

Параметры

Функция Numpy delete () принимает три параметра:

  1. массив: это входной массив.
  2. объект: это может быть любое отдельное число или подмассив.
  3. axis: указывает ось, которая должна быть удалена из массива.

Возвращаемое значение

Функция numpy delete () возвращает массив, удаляя подмассив, который был упомянут во время вызова функции.

Пример программирования

Удаление элементов из одномерного массива

См. следующий код.

 # Импорт numpyimport numpy как np # Мы создадим одномерный массив # это создаст массив со значениями от 0 до 5arr1 = np.arange (6) # Печать arrayprint ("  Массив: ", arr1) # Теперь мы вызовем delete () f  unction # Чтобы удалить элемент 3object = 3 # 3 необходимо удалить # здесь arr1 - это основной массив # объект - это номер, который нужно удалить arr = np.delete (arr1, object) # Печать нового массиваprint ("После удаления"  , объект, "новый массив:") print (arr) 

Вывод

 Массив: [0 1 2  3 4 5] После удаления 3 новый массив: [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 (). См. Следующий код.

 # Импорт numpyimport numpy как np # Мы создадим 2D-массив # формы 4x3arr1 = np. array ([(1, 2, 3), (4, 5, 6), (7, 8, 9), (50, 51, 52)]) # Печать массива print ("Массив:") print (  arr1) # Теперь мы вызовем функцию delete () # Чтобы удалить подмассив, присутствующий в массиве # Это означает, что будет удален третий столбец # массива obj = 2 # 3rd columnaxis = 1 # по столбцу # здесь arr1 - это основной массив # объект  это номер, который нужно удалить arr = np.delete (arr1, obj, axis) # Печать нового массива print ("После удаления столбца новый массив:") print (arr) # Теперь мы удалим вторую строку массива arr =  np.delete (arr, 1, 0) # Печать нового массиваprint ("После удаления строк новый массив:") print (arr) 

Вывод

 Массив: [[1 2 3] [4 5 6] [7 8 9] [50 51 52]] После удаления столбца новый массив: [[1 2] [4 5  ] [7 8] [50 51]] После удаления строк новый массив: [[1 2] [7 8] [50 51]] 

Объяснение

В этой программе мы объявили двумерный массив numpy размером 4 × 3, как мы можем видеть в выводе.

Сначала мы хотели удалить 3-й столбец массива. Для этого мы передали значение 2 в obj (obj = 2), поскольку индекс массива начинается с 0 и задана ось = 1, что указывает на то, что столбец будет удален. Значит, он удалит 3-й столбец. Если мы дадим axis = 0, тогда будет удалена 3-я строка.

Однако мы удалили 3-й столбец, а затем распечатали новый массив.

После этого , мы хотели удалить вторую строку нового массива, поэтому мы передали 1 как значение объекта, а ось = 0, потому что ось = 0 индексирует строку, а объект указывает, какая строка должна быть удалена.

Наконец, мы напечатали последний массив.

Python Numpy: Удалить строку

Использование numpy.delete () , и мы можем удалить всю строку из массива. См. Следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, ' n') a_del = np.delete (a, 1  , 0) print ('После удаления второй строки') print (a_del, ' n') print ('Исходный массив') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] После удаления второй строки [[0 1 2 3] [8 9 10 11]  ]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]] 

Из вывода мы видим, что 2-я строка (obj = 1, axis = 0) удаляется из массива.

Исходный массив не изменяется, и возвращается новая копия ndarray.

Python Numpy: укажите индекс для строки: obj

Мы можем указать индекс (номер строки или номер столбца) быть удаленным во втором параметре obj. Индекс начинается с 0. Указание несуществующего индекса вызывает ошибку.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, ' n')  a_del = np.delete (a, 0, 0) print ('После удаления первой строки') print (a_del, ' n') a_del2 = np. delete (a, 2, 0) print ('После удаления третьей строки') print (a_del2, ' n') print ('Исходный массив') print (a) 

Вывод

 pyt python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] После удаления первой строки [[4 5 6 7  ] [8 9 10 11]] После удаления третьей строки [[0 1 2 3] [4 5 6 7]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]] 

Объяснение

В приведенном выше примере мы удалили первую и третью строки массива. Индекс начинается с 0. Итак, 0 означает первую строку, а 2 означает третью строку.

Давайте передадим индекс, которого нет в массиве, и посмотрим на результат.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, ' n') a_del = np.delete (a, 3, 0) print ('После удаления четвертой строки'  ) print (a_del, ' n') print ('Исходный массив') print (a) 

Вывод

 python3  app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] Отслеживание (последний вызов последним): файл «app.py», строка 6, в  a_del = np.delete  (a, 3, 0) Файл "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py", строка 4371, в удалении, размер% i  "% (obj, axis, N)) IndexError: индекс 3 выходит за границы оси 0 с размером 3 

Объяснение

Мы указали несуществующий индекс; поэтому возникает ошибка.

Python Numpy: укажите ось (размер): ось

Укажите ось ( размер) для удаления в третьей оси параметров.

Номер оси начинается с 0. В случае двумерного массива строка является первым измерением (ось = 0), а столбец — вторым измерением (ось = 1). Указание несуществующего измерения вызывает ошибку.

См. Следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4) print  (a, ' n') a_del = np.delete (a, 1, 0) print ('После удаления второй строки') print (a_del, ' n') a_del2 = np.delete (a, 1, 1)  print ('После удаления второго столбца') print (a_del2, ' n') print ('Исходный массив') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] После удаления второй строки [[0 1 2 3] [8 9 10 11]] После  удаление второго столбца [[0 2 3] [4 6 7] [8 10 11]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]] 

Давайте определим ось, которой нет в массиве, и посмотрим на результат.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, '  n ') a_del = np.delete (a, 1, 2) print (' После удаления второй строки ') print (a_del,'  n ') print (' Исходный массив ') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] Трассировка  (последний вызов последним): файл "app.py", строка 6, в  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 ", строка 4300, в delete axis = normalize_axis_index (axis, ndim) numpy.AxisError: ось 2 находится за пределами массива  измерения 2 

Итак, указание несуществующего измерения вызывает ошибку.

Python Numpy: удаление нескольких строк и столбцов

Несколько строк и столбцов можно удалить одновременно, указав список или фрагмент во втором параметре obj. Мы можем удалить сразу несколько строк и столбцов, используя следующий способ.

  1. Использовать список Python
  2. Использовать фрагмент Python
  3. Использовать np.s_ []

Использовать список Python

Укажите номера строк и номеров столбцов в форме списка, который нужно удалить в массиве.

См. следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, ' n') a_del = np.delete  (a, [0, 3], 1) print ('После удаления первого и четвертого столбцов') print (a_del, ' n') print ('Исходный Ar  ray ') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6  7] [8 9 10 11]] После удаления первого и четвертого столбцов [[1 2] [5 6] [9 10]] Исходный массив [[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).

Мы также можем удалить сразу несколько строк. См. Следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (a, ' n') a_del = np.delete (a, [  1, 2], 0) print ('После удаления второй и третьей строк') print (a_del, ' n') print ('Исходный массив') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] После удаления второй и третьей строк [[0 1  2 3]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]] 

В приведенном выше примере мы удалили вторую и третью строки из array.

 np.delete (a, [1, 2], 0) 

В приведенном выше коде мы передали 0, что означает, что нам нужно удалить строка или ось x.

Затем мы указали вторую и третью строки, которые нужно удалить. Индекс массива начинается с 0.

Использовать фрагмент Python

Также можно указать несколько строк и столбцов с помощью используя фрагмент, определяющий диапазон с помощью [start: stop: step].

Создайте объект фрагмента с помощью slice () и укажите его как второй параметр obj.

Это эквивалентно [: stop], если есть один аргумент, [start: stop], если есть два аргумента, и [start: stop: step], если есть три аргумента. Если вы хотите опустить, укажите None явно.

См. Следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4  ) print (a, ' n') print ('После удаления первого и второго столбцов') a_del = np. delete (a, slice (2), 1) print (a_del, ' n') print ('Исходный массив') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7] [8 9 10 11]] После удаления первого и второго столбцов [[2 3] [6 7] [10  11]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]] 

Используйте np.s_ []

Используйте numpy.s_ [], если вы хотите писать в форме [start: stop: step].

Давайте удалим первый и второй столбцы с помощью np. s_ [] функция. Помните, что индекс массива начинается с 0.

См. Следующий код.

 import numpy as npa = np.arange (12) .reshape (3, 4) print (  a, ' n') print ('После удаления первого и второго столбцов') a_del = np.delete (a, np.s _ [: 2], 1) print (a_del, ' n') print ('Исходный массив  ') print (a) 

Вывод

 python3 app.py [[0 1 2 3] [4 5 6 7  ] [8 9 10 11]] После удаления первого и второго столбцов [[2 3] [6 7] [10 11]] Исходный массив [[0 1 2 3] [4 5 6 7] [8 9 10 11]]  

Функция Numpy delete () используется для удаления одной строки или столбца, нескольких строк или столбцов в множество. Мы также можем использовать фрагмент и список Python для удаления нескольких элементов (строк и столбцов). В этом уроке мы видели множество его вариаций. Надеюсь, вы многому научитесь из этого краткого примера.

Оцените статью
nanomode.ru
Добавить комментарий