用于状态空间搜索的多维网格
项目描述
一个可迭代的用于穷举搜索和多维问题解决的多维网格。
描述
定义了一个Grid对象,允许在任意数量的维度上高效迭代。网格对象允许迭代、多维选择和多维切片。
访问网格遵循__getitem__的约定,即[索引]。要检索多维选择,可以使用[索引1, 索引2]或[(索引1, 索引2)]来指定网格的有序维度以进行子选择。任何索引请求都可以用切片对象替换,例如[索引1, start2:end2:step2]是一个合法请求。
切片提供SubGrid对象,这些对象作为网格使用,但将它们引用的数据映射回原始网格对象。这允许对网格进行重复切片,其内存开销接近恒定,但代价是原始数据每次更改都需要分层切片请求。
提供了几种预设的网格,它们针对特定数据类型进行了优化,包括IntGrid、FloatGrid和ObjectGrid。后两者是通用解决方案,但存储效率不高。这些网格类型定义了存储的数据,而不是索引方案。所有网格都使用基于整数的索引,尽管计划创建一个浮点范围网格,该网格在接口后执行浮点到索引的映射。
请注意,创建具有许多维度的网格可能会占用极大的内存,即使使用高效的方案也是如此。随着要访问的元素数量的指数增长,这会导致非常长的迭代时间。例如,一个5维网格,每维有10个值,这将形成10^5个元素的网格——即100k个可迭代项——并且需要大约400kb的存储空间。同样,每维有100个值的同一网格将包含400亿个元素,需要超过37GB的内存来存储。
依赖项
pydatawrap
numpy
设置
安装
从源代码
python settup.py install
从pip
pip install gridwalker
功能
具有任意数量维度的多维网格定义
通过高效的手段进行迭代和赋值,适用于任何维度的赋值
语言偏好
Google风格指南
面向对象(有一些例外)
待办事项
为浮点精度网格迭代创建浮点索引网格
关闭
GridWalker-1.0.1.zip的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | bbd13eb5398de3d7963d3b32165017eb87bb87269c2dbb6080ff54b2f6d52847 |
|
MD5 | 0f112d482784f759ae33e6837457ee68 |
|
BLAKE2b-256 | aec23f4af2edc212b921fb5e34557d36305615cbfb3114fd1062d1e4dc30a960 |