从 NumPy 中的数组中删除元素
Vaibhav Vaibhav
2023年10月10日
在本文中,我们将学习从 NumPy 数组中删除元素的两种方法。
使用 numpy.delete()
函数删除元素
请参考以下代码。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
输出:
[ 1 2 3 5 7 9 10]
在上面的代码中,我们使用了 NumPy
库的 delete()
函数。delete()
函数接受三个参数,即 arr
,obj
和 axis
,并输出一个 NumPy 数组。arr
是我们希望从中删除元素的 NumPy 数组。obj
是整数列表。这些数字表示应从数组中删除的元素的索引。最后,axis
是一个可选参数。axis
指的是应删除 obj
所针对的元素所沿的轴。如果为该参数分配了 None
值,则将 arr
展平,并对该展平的数组进行删除。
与往常一样,如果为该方法提供的索引超出 arr
范围,则会抛出 IndexError
异常。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
输出:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
要了解这个函数的更多信息,请参阅此函数的官方文档
以下是在多维 NumPy 数组中删除的其他两个示例。
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
输出:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
使用 None
作为参数 axis
的值。
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
输出:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
使用 numpy.setdiff1d()
函数删除元素
这次,我们将使用 NumPy
中的 setdiff1d()
函数。该函数接受三个参数,ar1
、ar2
和 assume_unique
。ar1
和 ar2
是两个 NumPy 数组。assume_unique
是一个可选的布尔参数。其默认值为 False
。当其为 True
时,则假定两个输入数组是唯一的,并且此假设可以加快计算时间。
setdiff1d()
返回 ar1
中不在 ar2
中的唯一值。
请参考以下代码。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
输出:
[ 1 2 4 6 8 9 10]
与 numpy.delete()
不同,这两个数组都是 NumPy 数组,其中包含实际元素,但没有索引。
要了解有关此函数的更多信息,请参阅此函数的官方文档。
作者: Vaibhav Vaibhav