现在我只想用表中的x替换最小值,最大值...。而我不知道如何...
for i in table[1:]:
mn = min(i) if min(i) < mn else mn
mx = max(i) if max(i) > mx else mx
x = (mn+mx)/2
答案 0 :(得分:1)
以下方法应该起作用:
def remove_outliers(table):
mx = max(map(max, table))
mn = min(map(min, table))
avg = (mx + mn) / 2
for row in table:
row[:] = [avg if x in (mx, mn) else x for x in row]
# OR
for row in table:
for i, x in enumerate(row):
if x in (mx, mn):
row[i] = avg
max(map(max, table))
:将max
函数应用于table
中的每一行,并取所有{max}中的max
。 / p>
row[:] = ...
:分片分配。这是row
对象的一种变异。只需row = ...
即可重新绑定循环变量,而不会影响仍由table
索引的列表对象。
[avg if x in (mx, mn) else x for x in row]
:常规条件列表理解。相当不言自明。
答案 1 :(得分:0)
如果您使用的是numpy
,请签出clip
函数(https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html)。