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

Posted

技术标签:

【中文标题】如何删除数组中的最小数字,如果有多个最小数字,则删除第一个【英文标题】:How to delete the lowest number in an array, and if there's several minimum numbers, delete the first 【发布时间】:2018-06-23 09:00:11 【问题描述】:

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

假设我们有以下数组:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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]

【讨论】:

@Brad Solomon 你能告诉我上面的脚本有什么问题吗? 它是用 javascript 编写的,适合初学者。 好吧,我只是给他一个想法,因为我不知道 python【参考方案3】:

由于您使用的是 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: 返回一个新数组,删除了沿轴的子数组。

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

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

【讨论】:

以上是关于如何删除数组中的最小数字,如果有多个最小数字,则删除第一个的主要内容,如果未能解决你的问题,请参考以下文章

如何找到从多个数组中提取的数字的最小总和?

如何从数组中的数字中找到最大和最小数字[重复]

旋转数组的最小数字

最小删除子数组以使数组等于目标

删除一个数的K位使原数变得最小

在Java中查找数组中的最小和最大数