numpy.delete 函数用于删除 NumPy 数组中的指定子数组(元素或行/列),并返回一个新的数组,而不会修改原始数组。当 axis 为 None 时,数组会被展平。要删除多行或者多列的时候,obj需要是一个列表,或者array。本文主要介绍一下NumPy中delete方法的使用。

numpy.delete

numpy.delete(arr, obj, axis=None)      [source]

返回一个新的数组,该数组具有沿删除的轴的子数组。 对于一维数组,这将返回arr[obj]未返回的那些条目。

参数 :

arr :array_like

输入数组。

objslice, int 或 int类型的array

指示要沿指定轴删除的子数组的索引。

 在1.19.0版中进行了更改:

布尔索引现在被视为要删除的元素的掩码,

而不是强制转换为整数0和1。

axisint, 可选

删除obj定义的子数组所沿的轴。 如果axis为None,

则obj将应用于扁平化数组。

返回值 :

out :ndarray

arr的副本,其中删除了由obj指定的元素。 请注意,

delete不会就地发生。 如果axis为None,则out是一个扁平数组。

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]

推荐文档

相关文档

大家感兴趣的内容

随机列表