我的方法行得通,但不知何故看起来很笨拙。我想知道有没有更好的方法
我有一个带有数据元组(baseDataList
)的简单列表,一个处理该列表(calculate_results
)的函数,用结果(resultData
)生成numpy.ndarray。baseDataList
和NumpyresultData
的长度和索引匹配。现在我想返回并根据resultData
的结果选择baseDataList
的所有条目。如果resultData
条目是<;0,则排除它,否则baseDataList
的条目将基于resultData
中的不同值进行分组
下面我通过创建一个新的列表,添加空值并在resultData
中循环来解决这个问题。这不仅是笨拙的,我认为它还造成了数据开销,因为我现在有3个变量:baseDataList
、resultData
和resultList
,其中我只需要一个分组版本的baseDataList
。关于如何改进这个有什么想法吗
resultData, baseDataList = calculate_results(selection_value)
number_of_validResults = len(np.unique(resultData>=0))
idx = 0
resultList = [[] for x in range(number_of_validResults)]
for x in resultData:
if x >= 0: # no resultData: x = -1
resultList[x].append(baseDataList[idx])
idx+=1
这是三个元素的输出示例:
print(str(type(baseDataList)))
print("baseDataList: ")
for s in baseDataList[:2]:
print(*s
#<class 'list'>
#baseDataList:
#43.646556 -79.470988 5761688733 ...
#43.645314 -79.462791 5761688679 ...
print(str(type(resultData)))
print("resultData: ")
print(str(type(resultData)))
print("Unique: " + str(len(np.unique(resultData>=0)))
#<class 'numpy.ndarray'>
#resultData:
#[ 0 -1 0 5 5 -1 4 10 10 5 10 10 10 10 -1 10 10 10 10 10 4 4 6 1 2
#5 9 -1 10 10 10 6 10 8 10 10 6 8 10 10 3 9 10 10 10 6 6 4 6 6
#10 5 5 4 6 10 6 5 10 5 10 10 10 6 -1 6 4 4 10 10 10 10 10 10 7
#4 10 -1 -1 10 9 -1 5 3 6 6 6 6 6 6 6 4 6 6 4 6 6 6 6 6
#6 6 6 6 6 8 -1 6 10 10 4 4 10 9 -1 9 10 10 5 9 10 4 5 5 10
#6 10 10 5 10 6 5 6 10 10 10 10 10 10 10 10 10 6 4 5 10 -1 9 9 9
#6 10 10 6 1 6 10 10 10 10 10 10 6 5 9 10 10 6 10 10 10 -1 4 3 9
#9 7 5 10 10 10 4 8 -1 -1 6 4 4 6 10 9 6 10 9 10 1 6 10 10 10
#10 -1 6 10 10 9 10 10 2 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
#10 10 10 10 10 -1 1 10 10 1 1 10 10 1 -1 10 1 10 10 10 10 10 10 9 10
#11 11 -1 6 1 6 -1 10 6 4 8 10 10 10 10 8 10 10 10 10 10 11 6 12 12
#10 4 10 10 6 4 -1 4 -1 4 4 4 4 4 4 4 -1 4]
#Unique: 13
print("resultList: ")
print(str(type(resultList)))
for s in resultList[:2]:
print(*s)
#<class 'list'>
#resultList:
#namedResult_tuple(lat=43.646556, lng=79.470988, guid='5761688733', ...)
#namedResult_tuple(lat=43.645314, lng=-79.462791, guid='5761688679', ...)
#...
目前没有回答
相关问题 更多 >
编程相关推荐