如何删除数组中最小的数字,如果有几个最小数字,删除第一个
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]
我正在尝试制作一个脚本,其中输入是一个包含随机数的数组。我尝试删除数组中没有问题的最小数字。但是如果这个数字在数组中多次出现,我如何确保只有第一次出现的这个数字被删除?
假设我们有以下数组:
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]