【问题标题】:How to looping in python with raster dataset如何在带有栅格数据集的python中循环
【发布时间】:2021-07-21 03:26:56
【问题描述】:

我有一个多波段栅格(84 个波段)。我正在使用 GDAL 读取光栅并将其转换为 numpy 数组。在 numpy 中,当我检查数组形状时,它显示为 84 = 波段、3 = 行和 5 = col。我想计算 1 到 84 中 n 的 band(0)/band(n+1) 之间的比率。因此,我可以获得 83 个数组,每个数组代表逐像素的比率。例如,我有:

Band 1
    [[1,    2,   3,   4,  5],
     [6,    7,   8,   9,  10],
     [11,   12,  13,  14, 15]]
Band 2
    [[21,   22,   23,   24,  25],
     [26,   27,   28,   29,  30],
     [31,   32,   33,   34,  35]]
Band 3
    [[31,   32,   33,   34,  35],
     [36,   37,   38,   39,  40],
     [41,   42,   43,   44,  45]]
...
...
Band84

我需要以这样的方式遍历所有频段,以便获得以下信息:Band2/Band1;波段3/波段1; ... ; Band84/Band1

Band2/Band1
    [[1/21,   2/22,   3/23,  4/24,  5/25],
     [6/26,   7/27,   8/28,  9/29,  10/30],
     [11,31,  12/32,  13/33, 14/34, 15/35]]

等等……

有什么方法可以向量化这个计算?

非常感谢您的建议。

【问题讨论】:

  • 不就是X[0] / X[1:]吗?

标签: python


【解决方案1】:

如果我知道你需要

Band2/Band1; Band3/Band1 ... Band84/Band1

Band3/Band2; Band4/Band2 ... Band84/Band2

...

Band84/Band83

应该是这样的

for a in range(0, len(all_bands)-1): 
    for b in range(a+1, len(all_bands)): 
        print( all_bands[b]/all_bands[a] )

【讨论】:

  • 感谢 furas,它是矢量化解决方案的一种手段。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多