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

StructArra的Python项目详细描述


structarray允许您在 结构化(或非结构化)数据的数组。

此库对于在 阵列。

我包括了一个简单的粒子引擎的例子。它有10000个动画 粒子没有太大的麻烦。

这是“提前发布,经常发布”的“提前发布”部分 方程式。已经完成了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的一个紧循环中,所以 非常快。即使是10000个粒子。

将数据发送到视频卡非常简单:

>>> glVertexPointer(2, GL_FLOAT,
...     particles.get_data_stride(),
...     particles.get_data_addr())

当然还有更多的东西要展示。查看 工作示例的源分布

下载

我总是将最新版本上传到StructArray page on PyPI

安装

运行此命令下载并安装预编译的二进制文件。:

sudo easy_install StructArray

要从源代码处编译structarray,需要python开发头 安装。(这在debian和ubuntu发行版中被命名为python-dev。 我认为RPM发行版将其命名为^{TT3}$。

包含了c文件,因此不需要安装pyrex。但是,如果你 do有pyrex,我只用pyrex-0.9.6.3测试过。结果可能因 旧版本。

安装与大多数其他python模块一样:

python setup.py build
sudo python setup.py install

文档

您可以找到StructArray reference documentation here

下载源发行版时也会包含它。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView