计算列表中每个唯一元素的平均向量
Calculating the average vector for each unique element in a list
我有一个表格列表:
mylist =[([256, 408, 147, 628], 'size'), ([628, 526, 236, 676], 'camera'),
([526, 876, 676, 541], 'camera'), ([567, 731, 724, 203], 'size'),.....]
大小在 8000+ 左右。
它包含很多重复的条目,实际上这个列表中只有 100 个不同的词,所以我想通过取每个词的平均向量将这个列表减少到 100(不同词的数量)这个词的出现。
例如,我的新列表将采用以下形式:
newlist = [([411.5,569.5,435.5,415.5],'size',.....] #I have taken the average values of 'size'
here and want to repeat this for each unique word
长度为 100。
我该怎么做?
您可以通过将每个 'key' 的所有数据收集到字典中,然后计算分配给该键的每个列表中每个元素的平均值来实现。类似于:
from statistics import mean
data = [([1, 2, 3, 4], 'size'), ([10, 20, 30, 40], 'camera'),
([100, 200, 300, 400], 'camera'), ([10, 20, 30, 40], 'size')]
ddata = {}
for entry in data:
key = entry[-1]
if not key in ddata:
ddata[key] = []
ddata[key].append(entry[0])
#print(ddata)
out = []
for k, v in ddata.items():
out.append((list(map(mean, zip(*v))), k))
print(out)
# [([5.5, 11, 16.5, 22], 'size'), ([55, 110, 165, 220], 'camera')]
你可以试试这个!如果你喜欢,请告诉我:)
请注意,最终输出是 my_new_list,大豆检查一下:
print(my_new_list)
最后。
mylist_names = set([item[1] for item in mylist])
my_new_list = []
for name in mylist_names:
name_list = [item[0] for item in mylist if item[1] == name]
name_list = np.mean(name_list, axis=0).tolist()
my_new_list.append((name_list, name))
我有一个表格列表:
mylist =[([256, 408, 147, 628], 'size'), ([628, 526, 236, 676], 'camera'),
([526, 876, 676, 541], 'camera'), ([567, 731, 724, 203], 'size'),.....]
大小在 8000+ 左右。
它包含很多重复的条目,实际上这个列表中只有 100 个不同的词,所以我想通过取每个词的平均向量将这个列表减少到 100(不同词的数量)这个词的出现。
例如,我的新列表将采用以下形式:
newlist = [([411.5,569.5,435.5,415.5],'size',.....] #I have taken the average values of 'size'
here and want to repeat this for each unique word
长度为 100。
我该怎么做?
您可以通过将每个 'key' 的所有数据收集到字典中,然后计算分配给该键的每个列表中每个元素的平均值来实现。类似于:
from statistics import mean
data = [([1, 2, 3, 4], 'size'), ([10, 20, 30, 40], 'camera'),
([100, 200, 300, 400], 'camera'), ([10, 20, 30, 40], 'size')]
ddata = {}
for entry in data:
key = entry[-1]
if not key in ddata:
ddata[key] = []
ddata[key].append(entry[0])
#print(ddata)
out = []
for k, v in ddata.items():
out.append((list(map(mean, zip(*v))), k))
print(out)
# [([5.5, 11, 16.5, 22], 'size'), ([55, 110, 165, 220], 'camera')]
你可以试试这个!如果你喜欢,请告诉我:)
请注意,最终输出是 my_new_list,大豆检查一下:
print(my_new_list)
最后。
mylist_names = set([item[1] for item in mylist])
my_new_list = []
for name in mylist_names:
name_list = [item[0] for item in mylist if item[1] == name]
name_list = np.mean(name_list, axis=0).tolist()
my_new_list.append((name_list, name))