Python中如何遍历二维样本数组,逐行传参调用自定义模型函数
逐行调用model的实现方法
你的需求用Python的*序列解包特性就能非常简单实现,完全不需要手动从每行里拆分出p1到p16的数值。从你贴的print输出格式可以判断,当前的sample是典型的NumPy二维数组,每一行就是一个长度为16的一维向量,刚好匹配model的参数个数。
核心实现逻辑
- 先初始化一个空列表,按顺序存储每一行调用model得到的输出
- 循环遍历sample的每一行,把当前行的所有元素自动拆分为model需要的16个位置参数,调用函数后把结果存入列表
可直接运行的基础代码
# 初始化结果存储列表,按行顺序存model的输出 results = [] # 逐行遍历数据集 for row in sample: # *row 的作用:自动把当前行的16个数值按顺序作为位置参数传给model # 等价于手动写 model(row[0], row[1], row[2], ..., row[15]) current_output = model(*row) results.append(current_output)
新手实操注意事项
- 这个写法对普通Python二维列表、NumPy二维数组完全通用,不需要额外做格式转换
- 正式批量运行前,先提前确认每一行的元素长度刚好是16:可以用
print(len(sample[0]))检查第一行的长度,如果长度和model要求的参数个数不匹配,Python会直接抛出参数个数错误,提前检查可以避免无效运行 - 建议先单独测试第一行的调用是否正常:执行
print(model(*sample[0])),确认没有参数传递错误再跑全量数据 - 熟悉语法后可以用更简洁的列表推导式实现完全相同的效果,代码量更少:
results = [model(*row) for row in sample]
内容的提问来源于stack exchange,提问作者preehee
相关产品推荐
相关产品推荐

