可爱的 Python: Numerical Python
2007-03-29 12:14:19 来源:WEB开发网核心提示: 清单 12. 使用壁炉取暖>>> north = room[:,0]>>> near_fireplace = north[2:4,2:5]>>> near_fireplace += 8>>> north[3,2] =
清单 12. 使用壁炉取暖
>>> north = room[:,0]
>>> near_fireplace = north[2:4,2:5]
>>> near_fireplace += 8
>>> north[3,2] = 90 # the fireplace cell itself
>>> print room
[[[ 70. 70. 70. 70. 70.]
[ 70. 70. 70. 70. 70.]
[ 70. 70. 70. 70. 70.]]
[[ 70. 70. 70. 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. 66. 66.]]]
这里我们使用了一些比较巧妙的索引方法,可以沿多维的方向来指定层面。这些视图应该保留,以后还会用到。例如,您可能希望知道整个北面墙上的当前温度:
清单 13. 查看北面的墙
>>> print north
[[ 70. 70. 70. 70. 70.]
[ 70. 70. 70. 70. 70.]
[ 70. 78. 78. 78. 70.]
[ 66. 74. 90. 74. 66.]]
更多操作
以上介绍的仅仅是 Numarray 中便捷的函数和数组方法/属性中的一小部分。我希望能给您一些初步的认识;Numarray 文档是深入学习的极好参考资料。
既然我们的房间现在各处的温度不再相同,我们可能需要判断全局的状态。例如,当前房间内的平均温度:
清单 14. 查看平均化后的数组
>>> add.reduce(room.flat)/len(room.flat)
70.066666666666663
这里需要解释一下。您可以对数组进行的所有操作都有相对应的 通用函数 (ufunc)。所以,我们在前面的代码中使用的 floor -= 4 ,可以替换为 subtract(floor,4,floor) 。指定 subtract() 的三个参数,操作就可以正确完成。您还可以用 floor=subtract(floor,4) 来创建 floor 的一个拷贝,但这可能不是您所期望的,因为变化将发生在一个新的数组中,而不是 room 的一个子集中。
更多精彩
赞助商链接