如何删除数组中的最小数字,如果有多个最小数字,则删除第一个
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
的元素。
【讨论】:
以上是关于如何删除数组中的最小数字,如果有多个最小数字,则删除第一个的主要内容,如果未能解决你的问题,请参考以下文章