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]