如何从numpy数组中删除两个最小数字并计算中位数python 3

时间:2019-11-19 00:08:45

标签: python numpy

我正在生成一个5x3的随机数组。我需要识别并删除最小的两个数字,然后计算其余数字的中位数。我能够确定最小的数字,但无法继续进行。

import numpy as Np

a = Np.random.randint(100, size = (5,3))
print(a)
print('\n')

sort1 = Np.concatenate(a, axis=0)
print("Concatenated: ", sort1)
print('\n')
sort2 = Np.sort(sort1)
print(sort2)
print('\n')

c = Np.min(sort2,0) #min
print(c)
print('\n')

med = Np.median(sort2)
print("Median is: ", med)

2 个答案:

答案 0 :(得分:0)

您可以这样做:

a = Np.random.randint(100, size = (5,3))
a = Np.delete(a, a.argmin())
a = Np.delete(a, a.argmin())
Np.median(a)

# 48.0

答案 1 :(得分:0)

好吧,您设法获得了最小的数字,现在需要将其删除。

我将创建一个列表,您实际上不需要数组即可计算中位数。 创建列表后,它变得更容易了,您可以使用list.remove()删除项目,并且中位数函数保持不变。

您的代码将如下所示:

import numpy as Np

a = Np.random.randint(100, size = (5,3))


sort1 = list(Np.concatenate(a, axis=0))

sort1.remove(min(sort1))

med = Np.median(sort1)

sort1.remove(min(sort1))

med2 = Np.median(sort1)