python - 如何在 O(1) 中按键列选择行?(Python 数据表)
问题描述
如何在 O(1) 中按键值获取行?
我在文档中找到的唯一选择行的方法是行选择器,它似乎没有利用列的键控状态。
例如在此表中:
size = 10**4
DT = dt.Frame({'id':range(size)})
DT.key = 'id'
与按行号访问相比,使用行选择器访问真的很慢:
for i in range(size):
DT[dt.f.id==i,:]
# ~2.61 s
for i in range(size):
DT[i,:]
# ~0.03 s
由于该列是键控的,我的期望是能够在 O(1) 中访问,但我不知道实现这一目标的正确方法。
解决方案
使用 join 模拟行选择器可以获得更快的结果:
for i in range(size):
dt.Frame(id = [i])[:, :, dt.join(DT)]
# ~0.4 s
我相信创建一个中间帧dt.Frame(id = [i])
是缓慢的部分。
推荐阅读
- python - 如何为 .csv 或 .mat 文件训练 CNN?
- react-native - 是否有可能摆脱进口的相对路径?
- html - 如何使 svg 居中
在所有可能宽度的较大响应容器内? - java - 我试图在 androd studio 中创建更高或更低的 Guessing 游戏,当我尝试运行它时,生成的唯一随机数为零
- sapui5 - SAPUI5基于图片、车间构建GeoMap
- reactjs - 世博地图查看国家颜色
- java - 从哈希图中搜索键并打印值
- python - python在开头写空行
- active-directory - 如何使用 LDAP 设置 Azure DevOps Server 2019
- c - 如何修改另一个 .c 中的结构?