numpy.delete
numpy.delete(arr, obj, axis=None) [source]
返回一个新的数组,该数组具有沿删除的轴的子数组。 对于一维数组,这将返回arr[obj]未返回的那些条目。
参数 : | arr :array_like 输入数组。 obj : 指示要沿指定轴删除的子数组的索引。 在1.19.0版中进行了更改: 布尔索引现在被视为要删除的元素的掩码, 而不是强制转换为整数0和1。 axis : 删除obj定义的子数组所沿的轴。 如果axis为None, 则obj将应用于扁平化数组。 |
返回值 : | out :ndarray arr的副本,其中删除了由obj指定的元素。 请注意,
|
Notes
通常,最好使用布尔掩码。 例如:
import numpy as np # 创建一个包含 1 到 12 的数组 arr = np.arange(12) + 1 print("原始数组:", arr) # 创建一个全为 True 的布尔掩码(mask) mask = np.ones(len(arr), dtype=bool) # 将索引 0, 2, 4 位置的元素设为 False,表示要删除它们 mask[[0, 2, 4]] = False # 使用布尔索引筛选数组 result = arr[mask, ...] # 输出结果 print("应用布尔掩码后的数组:", result)
等效于np.delete(arr,[0,2,4],axis = 0)
,但允许进一步使用mask
。
例子
1)删除一维数组中的元素
import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) # 删除索引2的元素 new_arr = np.delete(arr, 2) print(new_arr) # [0 1 3 4 5]
2)删除多个元素
import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) # 删除索引1,3,4的元素 new_arr = np.delete(arr, [1, 3, 4]) print(new_arr) # [0 2 5]
3)删除二维数组的行
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 删除索引1(第二行) new_arr = np.delete(arr, 1, axis=0) print(new_arr)
4)删除二维数组的列
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 删除索引0(第一列) new_arr = np.delete(arr, 0, axis=1) print(new_arr)
5. 使用切片删除多个元素
import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) # 删除索引1到3(不包含4) new_arr = np.delete(arr, slice(1, 4)) print(new_arr) # [0 4 5]