list - 使用 itertools 添加标签
问题描述
我有一个脚本来计算二维矩阵的行列式。我如何编写每个计算确定的标签?我创建了一个空列表来填充标签...
那是代码:
import itertools, operator
import numpy as np
list_determinant=[]
list_label=[]
K=[1,2]
l = np.asarray([(100,1),(100,2),(200,5),(200,7)])
print(l)
grouped = itertools.groupby([(label, float(value)) for (label, value) in l], operator.itemgetter(0))
def example(g):
value = [value for label, value in g]
xy = np.stack((value,K),axis=1)
determinant = np.linalg.det(xy)
list_determinant.append(determinant)
return determinant
function = [(label, '%.3f' %round(example(g),3)) for (label, g) in grouped]
print(function)
print(list_determinant)
print(list_label) #???
解决方案
为什么不从function
列表中提取标签?你的最后几行看起来像:
⋮
list_label = [label for (label, _) in function]
print(list_label)
我会对您的代码进行其他修改,但这只是个人喜好问题:
import itertools, operator
import numpy as np
K = (1, 2)
input_values = np.asarray([(100, 1), (100, 2), (200, 5), (200, 7)])
print(input_values)
values_as_float = ((label, float(value)) for (label, value) in input_values)
values_grouped = itertools.groupby(values_as_float, operator.itemgetter(0))
def compute_determinants(values_grouped):
for (current_label, current_group) in values_grouped:
values = [value for _, value in current_group]
xy = np.stack((values, K), axis=1)
determinant = np.linalg.det(xy)
yield (current_label, determinant)
results = list(compute_determinants(values_grouped))
results_formatted = [(label, f'{determinant:.3f}') for (label, determinant) in results]
print(results_formatted)
labels, determinants = list(zip(*results))
print(determinants)
print(labels)
推荐阅读
- powershell - 如何通过 PowerShell 脚本更改 AKS 节点数
- regex - 如何编写一个正则表达式来匹配这个模式?
- android - 是否有任何方法可以检测应用程序是否以前在 Android 上安装过当前存储策略
- android - Android - 传递按钮实例时避免 AsyncTask 中的内存泄漏
- javascript - 这些条件有什么问题?
- dataframe - 如何根据另一个数据帧检查 pyspark 数据帧值
- python - 如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值
- android-layout - 当单击 EditText 以绑定消息时,如何调整工具栏和底部导航栏?
- r - 如何使用 r 中的 ggplot() 函数在单个图中标记多个重叠曲线?
- javascript - 添加确认输入类型提交