跳转到主要内容

对结构化数据数组的快速操作。

项目描述

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参考文档

它也包含在您下载源代码包时。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

StructArray-0.1.tar.gz (54.1 kB 查看哈希值)

上传时间 源代码

构建发行版

StructArray-0.1.win32-py2.5.exe (100.5 kB 查看哈希值)

上传时间 源代码

StructArray-0.1-py2.5-win32.egg (35.7 kB 查看哈希值)

上传时间 源代码

StructArray-0.1-py2.5-linux-i686.egg (94.0 kB 查看哈希值)

上传时间 源代码

StructArray-0.1-py2.4-linux-i686.egg (93.5 kB 查看哈希值)

上传时间 源代码

由以下机构支持