对结构化数据数组的快速操作。
项目描述
StructArray 允许您对结构化(或非结构化)数据数组执行快速的算术运算。
此库对于在数组中的每个元素上执行相同的操作非常有用。
我包含了一个示例,展示了简单的粒子引擎。它毫不费力地动画化 10,000 个粒子。
这是“尽早发布”的“尽早发布,经常发布”方程的一部分。它完成了 80%。我只需要完成剩余的 80%。
快速介绍
以下是关于您可以用它做什么的快速介绍
>>> import structarray, random
首先,创建一个具有位置和速度属性的 StructArray,长度为 1000。
>>> particles = structarray.StructArray(('x', 'y', 'dx', 'dy'), size=10000)
让我们给粒子一点随机运动。我们可以遍历每个项目并分配属性。
>>> for p in particles: ... p.dx = random.random() * 20 - 10 ... p.dy = random.random() * 50
我们也可以像这样按索引分配值
>>> particles[0].dy = 100
或者我们可以将所有四个值分配给一个索引
>>> particles[0] = (0, 20, 5, 100) # (x, y, dx, dy)
我们也可以通过直接将值分配给数组的属性来将值分配给每个项目
>>> particles.x = 0 # set x to zero for every item
我们还可以将一个属性的值复制到另一个属性中
>>> particles.y = particles.x
我们还可以在这个过程中进行算术运算
>>> particles.y = particles.x + 10
那么,我们如何进行模拟循环呢?
>>> particles.x += particles.dx >>> particles.y += particles.dy >>> particles.dy -= 9.81
这里重要的是,这三个操作中的每一个都应用于数组中的 每个 项目。并且它都在C中的紧密循环中完成,因此它非常快。即使是 10,000 个粒子也是如此。
将数据发送到显卡相当简单
>>> glVertexPointer(2, GL_FLOAT, ... particles.get_data_stride(), ... particles.get_data_addr())
当然,要显示它还需要更多。请查看源分布以获取工作示例
下载
我总是将最新版本上传到 PyPI 上的 StructArray 页面。
安装
运行此命令以下载和安装预编译的二进制文件。
sudo easy_install StructArray
要从源代码编译 StructArray,您需要安装 Python 开发头文件。(在 Debian 和 Ubuntu 发行版中,此名称为 python-dev。我认为 rpm 发行版将其命名为 python-devel。)
C文件已包含,因此不需要安装Pyrex。但是,如果您确实安装了Pyrex,我仅测试过Pyrex-0.9.6.3。结果可能因旧版本而有所不同。
安装方式与大多数Python模块类似
python setup.py build sudo python setup.py install
文档
它也包含在您下载源代码包时。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码发行版
构建发行版
StructArray-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9b508bdfa64d41b4384ab3d699f054f15c33fc0c750d7bb2fbba8b632123e7d |
|
MD5 | c9b478692b9de7577b317dab7624c6d9 |
|
BLAKE2b-256 | 206f68aad1203fd5bae9af02b179c38bea8a053a9dbdb8a07e95b34d5678f753 |
StructArray-0.1.win32-py2.5.exe的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0eeb2923c6da64182c5094cb36c8be12a3cc17fed60f5f4830a0e24a6a797ec9 |
|
MD5 | ca62a41765f40a25661d87b216c3349a |
|
BLAKE2b-256 | 4d676f539c20c593bbc9f714467f8a960ec6d3cb8b74e4b729eca2c3b6bd540b |
StructArray-0.1-py2.5-win32.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 41811eab348b8c08607c6036f59de3c6b805a481218be233e2fc0e78f5905266 |
|
MD5 | 7a22fa01b6cb8ad8910ad700002affd0 |
|
BLAKE2b-256 | 68e7d1859136057fc9427078349174b6b0f965d92abc498484e7f9504aa6ea0e |
StructArray-0.1-py2.5-linux-i686.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f85fff5b99a174206eb565d92db61b11c74af67da2c91d1bd24789a990ba456 |
|
MD5 | 2d4b25ed2dc42d6f1d9ff5851872c5a5 |
|
BLAKE2b-256 | def4db23b20fd15a93b8c7d0a2882aa8ba77a75e79ed6db69e2e92c678bb1259 |