如何删除数组中最小的数字,如果有几个最小数字,删除第一个

How to delete the lowest number in an array, and if there's several minimum numbers, delete the first

我正在尝试制作一个脚本,其中输入是一个包含随机数的数组。我尝试删除数组中没有问题的最小数字。但是如果这个数字在数组中多次出现,我如何确保只有第一次出现的这个数字被删除?

假设我们有以下数组:

a = np.array([2,6,2,1,6,1,9])

此处最小的数字是 1,但由于它出现了两次,我只想删除第一次出现的结果,因此得到以下数组:

 a = np.array([2,6,2,6,1,9])

使用本机 Python list 执行此操作的简单方法是:

>> a = [1,2,3,4,1,2,1]
>> del a[a.index(min(a))]
>> a
[2, 3, 4, 1, 2, 1]

由于您使用的是 NumPy,而非原生 Python 列表:

a = np.array([2,6,2,1,6,1,9])

a = np.delete(a, a.argmin())

print(a)
# [2 6 2 6 1 9]

np.delete: Return 一个新数组,其中删除了沿轴的子数组。

np.argmin: Returns 沿轴的最小值索引。

对于 NumPy 数组,您不能像在列表中那样使用 del 删除元素。

你可以简单地做两件事,先排序,然后移动数组。例如

var list = [2, 1, 4, 5, 1];
list=list.sort(); // result would be like this [1,1,2,4,5]
list=list.shift();// result would be [1,2,4,5]