从 NumPy 中的数组中删除元素
Vaibhav Vaibhav
2023年10月10日
NumPy
在本文中,我们将学习从 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 数组,其中包含实际元素,但没有索引。
要了解有关此函数的更多信息,请参阅此函数的官方文档。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Vaibhav Vaibhav
