python - 为什么python中的以下简单赋值语句需要花费大量时间来执行?
问题描述
下面的代码片段需要太多时间来执行。它只包含一个简单的 for 循环和 if 循环。我很确定这不是任何性能问题,因为我的系统功能强大。有人可以告诉我为什么以及任何可能的解决方案吗?
new_dict= {}
for cnt,xx in enumerate(data):
w = som.winner(xx)
if w not in cluster_centers.keys():
new_dict[w]=count
count+=1
dataframe['Values'].iloc[cnt]= new_dict[w]
解决方案
没有样本数据很难确定。我们无法确定“”需要多少时间som.winner
,您需要分析(参见docs.python.org/3/library/profile.html示例)代码。我猜最贵的是
" w not in cluster_centers.keys()
" 循环的一部分。
new_dict= {}
for cnt,xx in enumerate(data):
w = som.winner(xx)
if w not in cluster_centers:
new_dict[w]=count
count+=1
dataframe['Values'].iloc[cnt]= new_dict[w]
注意,我假设 cluster_center 是一个字典。如果它是另一个任意数据结构,我建议为 O(1) 查找创建一个集合。
话虽如此,这看起来确实像是无需循环即可完成的事情。data
因此,如果您可以为和提供一些相同的数据dataframe
,我们可能会为您提供帮助。
推荐阅读
- javascript - 自动化课堂会话
- uwp - WinUI2 中的 WebView2 有时会引发 CoreProcessFailed 错误
- c++ - 错误:预期“;” 在成员声明的末尾和令牌“<”之前的预期不合格 id
- klipfolio - 在klipfolio中从json中分组多个日期
- azure-devops - 获取与构建相关的更改或提交列表
- amazon-web-services - aws 和 docker 容器上的 Odoo
- c# - 如何返回 IActionResult 兼容的 UnprocessableEntity - HttpStatusCode (422)
- python - 如何在不使用 Python 库的情况下从单行输入制作矩阵?
- html - 导航栏中的下拉问题 - Bootstrap
- python-3.x - 从指定目录运行python