可爱的 Python: Numerical Python
2007-03-29 12:14:19 来源:WEB开发网核心提示: 然后,我们需要定义邻近单元的区域,可爱的 Python: Numerical Python(9),由于我们的房间很小,所以经常会选择到房间的表面、边沿或者一角 -- 单元的 region 可能会比最大的 27 元素 (3x3x3) 子集要小,我鼓励您在自己的系统上安装 Numarray 和
然后,我们需要定义邻近单元的区域。由于我们的房间很小,所以经常会选择到房间的表面、边沿或者一角 -- 单元的 region 可能会比最大的 27 元素 (3x3x3) 子集要小。这没关系;我们只需要使用正确的分母来计算平均值。这个新的平均温度值被赋给前面随机选择的单元。
您可以在您的模型中执行任意多次的平均化过程。每一次调用只调整一个单元。多次调用会使用房间的某些部分的温度逐渐趋于平均。即使数组是动态改变的, equalize() 函数照样可以返回它的数组。当您只想平均化模型的一个 拷贝时这将非常有用:
清单 17. 执行 equalize()
>>> print equalize(room.copy())
[[[ 70. 70. 70. 70. 70. ]
[ 70. 70. 70. 70. 70. ]
[ 70. 70. 70. 70. 70. ]]
[[ 70. 70. 71.333333 70. 70. ]
[ 70. 70. 70. 70. 70. ]
[ 70. 70. 70. 70. 70. ]]
[[ 70. 78. 78. 78. 70. ]
[ 70. 70. 70. 70. 70. ]
[ 70. 70. 70. 70. 70. ]]
[[ 66. 74. 90. 74. 66. ]
[ 66. 66. 66. 66. 66. ]
[ 66. 66. 66. 68. 66. ]]]
结束语
本文仅介绍了 Numarray 的部分功能。它的功能远不止这些。例如,您可以使用填充函数来填充数组,这对于物理模型来说非常有用。您不但可以通过层面而且可以通过索引数组来指定数组的子集 -- 这使您不但可以对数组中不连续的片断进行操作,而且可以 -- 通过 take() 函数 -- 以各种方式重新定义数组的维数和形状。
前面我所描述的大部分操作都是针对于标量和数组的;您还可以执行数组之间的操作,包括那些不同维度的数组之间。这涉及到的内容很多,但通过 API 可以直观地完成所有这些操作。
我鼓励您在自己的系统上安装 Numarray 和 / 或 Numeric。它不难上手,并且它提供的对数组的快速操作可以应用于极广泛的领域 -- 往往是您开始时意想不到的。
更多精彩
赞助商链接