numpy.delete#

numpy.delete(arr, obj, axis=None)[源代码]#

返回一个新数组,删除沿轴的子数组.对于一维数组,这返回那些未被 arr[obj] 返回的条目.

参数:
arrarray_like

输入数组.

objslice, int 或 int 数组

指示要沿指定轴移除的子数组索引.

在 1.19.0 版本发生变更: 布尔索引现在被视为要移除的元素的掩码,而不是被转换为整数 0 和 1.

axisint, 可选

要沿其删除由 obj 定义的子数组的轴.如果 axis 是 None,则 obj 应用于展平的数组.

返回:
outndarray

通过 obj 指定的元素从 arr 中移除后的副本.注意,`delete` 不是在原地进行的.如果 axis 是 None,`out` 是一个展平的数组.

参见

insert

将元素插入数组.

append

在数组的末尾追加元素.

备注

通常使用布尔掩码是更好的选择.例如:

>>> arr = np.arange(12) + 1
>>> mask = np.ones(len(arr), dtype=bool)
>>> mask[[0,2,4]] = False
>>> result = arr[mask,...]

等同于 np.delete(arr, [0,2,4], axis=0),但允许进一步使用 mask.

示例

>>> import numpy as np
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> np.delete(arr, 1, 0)
array([[ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])
>>> np.delete(arr, np.s_[::2], 1)
array([[ 2,  4],
       [ 6,  8],
       [10, 12]])
>>> np.delete(arr, [1,3,5], None)
array([ 1,  3,  5,  7,  8,  9, 10, 11, 12])