python去掉最高最低求平均值_从平均值计算中删除数组的最大和最小元素

python list有一个remove方法。在

使用实用函数,我们可以从一行中移除最小和最大元素:def foo(i,j,k):

il = i.tolist()

il.remove(j)

il.remove(k)

return il

In [230]: [foo(i,j,k) for i,j,k in zip(a,b,c)]

Out[230]: [[4, 5], [2, 5], [3, 9]]

这可以用np.array(...)转换回一个数组。注意,这只删除了最后一行中的9中的一个。如果它同时删除了这两个值,最后一个列表将只有1个值,并且结果无法转换回二维数组。在

我确信我们可以想出一个纯数组方法,可能使用argmax和{},而不是{}和{}。但我认为对于Python初学者来说,列表方法是一个更好的起点。在

一种阵列掩蔽方法

^{pr2}$

同样,如果我们只从每一行中删除一个max和一个min,这会更好。在

另一种掩蔽方法:In [257]: (a!=b[:,None]) & (a!=c[:,None])

Out[257]:

array([[False, True, True, False],

[ True, False, True, False],

[ True, False, False, False]], dtype=bool)

In [258]: a[(a!=b[:,None]) & (a!=c[:,None])]

Out[258]: array([4, 5, 2, 5, 3])

这确实删除了最后一行中的所有“9”。但它不保留行分割。在

这将保留行结构,并允许可变长度:In [259]: mask=(a!=b[:,None]) & (a!=c[:,None])

In [260]: [i[j] for i,j in zip(a, mask)]

Out[260]: [array([4, 5]), array([2, 5]), array([3])]

你可能感兴趣的:(python去掉最高最低求平均值_从平均值计算中删除数组的最大和最小元素)