【问题标题】:Calling Object from 3D Matrix with a for loop使用 for 循环从 3D 矩阵调用对象
【发布时间】:2013-12-03 04:15:18
【问题描述】:

我有一个带有 x 和 y 坐标的地图数组,每个 (x,y) 坐标都与一个数字相关。我收集了一堆具有相同尺寸的地图并将它们组织成一个 3D 矩阵。

现在我想一次调用 x,y 坐标中的所有数字。

我以为会是这样的

    for t in Map_Collection:
        for x, y in Map_Collection[:,:,t]
            print Map_Collection[x,y] 
            #hoping it would give a large list of single numbers    

这没有解决给我多个错误,我无法找出原因。但我认为我的整个逻辑可能已经关闭。

为了澄清,我希望能够为每个时间戳找到地图的每个坐标的每个数字,并将其用于我已经拥有的单独函数中。

请帮忙。

【问题讨论】:

  • 请发布您遇到的错误。
  • 您能否更仔细地编辑您的问题。诸如“找到每个坐标的每个数字”或“和每个 (x,y) 坐标”之类的语句使其他人不得不猜测您要问的内容。

标签: arrays object numpy matrix multidimensional-array


【解决方案1】:

让我们从简单的开始:

 map=np.arange(2*3*4).reshape(2,3,4)
 for t in map:
     print t
     print

生产

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

[[12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]]

也就是说,每个t 都是maprow(第一维)。

您尝试使用t 作为最后一个索引。为此,您需要生成一系列数字,例如[0,1,2...]

for i in range(map.shape[-1]):
    for j in range(map.shape[1]):
        for k in range(map.shape[0]):
            print map[k,j,i]

将打印map 中的所有条目。它并不漂亮,但它为您提供了一个起点。您可能需要重新排序迭代器。

这是一种使用“行”来逐步简化输入的方法:

for t in map:
    for x in t:
        for y in x:
            print y

按照arange 生成它们的顺序(以及它们在map 中的存储顺序)给出值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2012-06-13
    • 2013-07-30
    • 2016-08-21
    相关资源
    最近更新 更多