我对嵌套列表使用python numpy.std()过滤掉不相关的数据有问题吗



我有一个带有许多不同变体的传入列表:

[(float)Width, (float)Height, aspect ratio, unique name]
[(float)Width, (float)Height, aspect ratio, unique name]

我试图弄清楚如何首先运行标准偏差,使用宽度和高度过滤掉面积,然后重新运行另一个级别,使用纵横比过滤掉。最后,我计划生成宽度和高度的平均值[np.mean(w_h,axis=0(]。我看到我需要将列表分开,但我想确保如果它超出预期值,我可以在下一次运行时将其删除。有人能给我一些建议吗?

我试着像其他np操作一样用axis=0运行它,但没有成功。运行它通常会有问题,因为唯一的名称是字符串而不是浮点值。但是,只获取3个值也是没有意义的,因为我不想比较列表中的数字,我想垂直比较数字,但如果不符合参数,也可以删除整行。

我想通了!!我最终制作了两个不同的函数,一个执行标准差,并返回符合两个标准差的特定索引的值列表。

import NumPy as np
import statistics
def std_filter(list, idx):  # [[number,number,number], [number, number,number]...]
idx_pool = []
float_idx_pool = np.array(idx_pool, dtype=np.float32)
for element in list:
item = element[idx]
if isinstance(item, str) == True:
print("item in element must be an int or float")
break
idx_pool.append(item)
float_idx_pool = np.append(float_idx_pool, idx_pool)
standard_deviation = statistics.stdev(idx_pool)
element_mean = [np.mean(float_idx_pool, axis=0)]
final_list = [x for x in idx_pool if (x > np.subtract(element_mean, 2 * standard_deviation))]
final_list = [x for x in final_list if (x < np.add(element_mean, 2 * standard_deviation))]
return final_list

我让原始列表运行另一个函数,以确定数字是否与正确列表中的任何数字匹配。它只需要指定特定的索引。

def remove_nested_with_idx(List_main, List_keep, list_main_idx):
# function sistructive, making sure to copy
list_to_modify = List_main.copy()
# runs through each element in specific idx and compares it to specific list
for elem_in_list in List_main:
item = elem_in_list[list_main_idx]
# checks item to see if value is in List_keep
if item not in List_keep:
list_to_modify.remove(elem_in_list)
return list_to_modify

如果有人能想出更好的方法,请告诉我。

最新更新