首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/numpy:将索引拆分成坐标

Python/numpy:将索引拆分成坐标
EN

Stack Overflow用户
提问于 2013-05-01 02:20:08
回答 2查看 1K关注 0票数 0

上下文

我正在使用Python和numpy,使用数组来表示3D地形。该数组的形状为((0.0,0.0,0.0),terrainLength),其中terrainLength -对于本问题的目的-通常是400。我的地址是(x,z),而y现在无关紧要。似乎在numpy中实现这一点的最好方法是:一个长度为3的数组(即顶点)的一维数组。这意味着如果我想拉出(x=5,y=?,z=10)处的顶点,我必须引用terrain_arrayx*terrainLength+z,即terrain_array2010。

标题中提到的“任意基”是terrainLength:我认为如果我在1Dnumpy和2D平面网格参考之间切换,numpy的坐标系就像有一个base-400系统,其中z是最右边的列,x是下一个左边的列。

问题

我正在编写一对函数,用于在直观的(x,?,z)坐标系和numpy的一维坐标系之间进行转换。如上所述,如果我想拉出(x=5,y=?,z=10)处的顶点,我必须引用terrain_arrayx*terrainLength+z即terrain_array2010。看起来我的函数将从/和%的使用中受益,但我想知道这是否是最佳实践,假设是正整数坐标:

代码语言:javascript
复制
def toGridCoords( matrix_index ):
    global terrainLength
    return floor(matrix_index/terrainLength), matrix_index%terrainLength

def toArrayCoord( x, z ):
    global terrainLength
    return x*terrainLength+z

谢谢!

为了先发制人,“为什么没有一个只包含y坐标的形状数组((0.0),3),它只包含y坐标,并从位置假设x和z坐标”,我仍然在编写地形系统,这已经造成了各种各样的破坏(例如,难以引入可变的地形分辨率...)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-01 04:02:15

您正在尝试做的事情应该可以很好地工作。您可以使用floor、/和%,这类操作通常都是这样做的。

避免全局变量通常是首选的,但如果这是一个一次性的项目,应该不会有问题。

票数 0
EN

Stack Overflow用户

发布于 2015-07-16 00:23:34

我想我在搜索同样的东西(如果我正确理解了你的问题)。如果是这样,您可以使用numpy unravel_index

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16306485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档