如何从NumPy数组中删除特定元素(附实例)

4,565 阅读2分钟

你可以使用以下方法从NumPy数组中移除特定元素。

方法1:移除与特定值相等的元素

#remove elements whose value is equal to 12
new_array = np.delete(original_array, np.where(original_array == 12))

方法2:移除与列表中某些值相等的元素

#remove elements whose value is equal to 2, 5, or 12
new_array = np.setdiff1d(original_array, [2, 5, 12])

方法3:基于索引位置的移除元素

#remove elements in index positions 0 and 6
new_array = np.delete(original_array, [0, 6])

下面的例子展示了如何在实践中使用每种方法。

例1:移除与特定值相等的元素

下面的代码显示了如何从一个NumPy数组中移除所有值等于12的元素:

import numpy as np

#define original array of values
original_array = np.array([1, 2, 2, 4, 5, 7, 9, 12, 12])

#remove elements whose value is equal to 12
new_array = np.delete(original_array, np.where(original_array == 12))

#view new array
print(new_array)

[1 2 2 4 5 7 9]

注意,数组中等于12的两个元素都被删除了。

例2:删除与列表中某个值相等的元素

下面的代码显示了如何从一个NumPy数组中删除所有值等于2、5或12的元素:

import numpy as np

#define original array of values
original_array = np.array([1, 2, 2, 4, 5, 7, 9, 12, 12])

#remove elements whose value is equal to 2, 5, or 12
new_array = np.setdiff1d(original_array, [2, 5, 12])

#view new array
print(new_array)

[1 4 7 9]

请注意,所有值为2、5或12的元素都被删除了。

例3:基于索引位置的元素移除

下面的代码显示了如何从一个NumPy数组中移除索引位置0和6的元素:

import numpy as np

#define original array of values
original_array = np.array([1, 2, 2, 4, 5, 7, 9, 12, 12])

#remove elements in index positions 0 and 6
new_array = np.delete(original_array, [0, 6])

#view new array
print(new_array)

[ 2  2  4  5  7 12 12]

注意,索引位置0(值为1)和索引位置6(值为9)的元素都被从NumPy数组中移除。

其他资源

下面的教程解释了如何在Python中进行其他常见的操作:

如何用数值填充NumPy数组
如何替换NumPy数组中的元素
如何从NumPy数组中获取特定行