使用计算修改 xarray 列
modify an xarray column with a calculation
这看起来应该很简单,但也许我对数组的经验不足让我很难做到。我有一个 xarray
我想做的是将波段列乘以
ds[:, 0] = (ds[:, 0] - xmin) / (xmax - xmin)
哪里
xmin is -0.21
xmax is 0.3
上面的行似乎没有按预期工作。它似乎修改了无数据值。我也试过了
ds2 = ds.where(ds.band > -10000.0)
然后是 运行 行,结果不同但仍然不正确。
xmin 和 xmax 与 XY 数据无关,我读入数组的栅格有 XYZ 数据,我想做的是标准化 Z(高程)列,我认为这是显示的如图像中的“乐队”。 xmin 和 xmax 实际上是我将要比较的几个 rasters/arrays 的最小和最大 Z 值。
所以我不想只修改 Z 的 XY。说完之后,我会将数组重新导出回光栅
所以对于整列用上面的公式调整每个值
我确信这是一项非常容易的任务,但我不知道该怎么做。
你有一个 3d DataArray
,但是 band
维度只有 1,所以你基本上有一个 2d 数组。如果不需要/不想要,可以使用 ds.squeeze()
删除维度。
当你说
what i am trying to do is multiply the band column
你的意思是将乘法应用于整个阵列(所以应用于每个像素)?
在这种情况下,您可以这样做:
xmin = -0.21
xmax = 0.3
ds_scaled = (ds - xmin) / (xmax - xmin)
既然你想要scale/normalize数据,你也可以使用从数据中导出的xmin
和xmax
:
# over full array
xmin = ds.min()
xmax = ds.max()
ds_scaled = (ds - xmin) / (xmax - xmin)
或刚好超过特定维度
# over y dimension
xmin = ds.min(‘y’)
xmax = ds.max(‘y’)
ds_scaled = (ds - xmin) / (xmax - xmin)
这看起来应该很简单,但也许我对数组的经验不足让我很难做到。我有一个 xarray
我想做的是将波段列乘以
ds[:, 0] = (ds[:, 0] - xmin) / (xmax - xmin)
哪里
xmin is -0.21
xmax is 0.3
上面的行似乎没有按预期工作。它似乎修改了无数据值。我也试过了
ds2 = ds.where(ds.band > -10000.0)
然后是 运行 行,结果不同但仍然不正确。
xmin 和 xmax 与 XY 数据无关,我读入数组的栅格有 XYZ 数据,我想做的是标准化 Z(高程)列,我认为这是显示的如图像中的“乐队”。 xmin 和 xmax 实际上是我将要比较的几个 rasters/arrays 的最小和最大 Z 值。
所以我不想只修改 Z 的 XY。说完之后,我会将数组重新导出回光栅
所以对于整列用上面的公式调整每个值
我确信这是一项非常容易的任务,但我不知道该怎么做。
你有一个 3d DataArray
,但是 band
维度只有 1,所以你基本上有一个 2d 数组。如果不需要/不想要,可以使用 ds.squeeze()
删除维度。
当你说
what i am trying to do is multiply the band column
你的意思是将乘法应用于整个阵列(所以应用于每个像素)?
在这种情况下,您可以这样做:
xmin = -0.21
xmax = 0.3
ds_scaled = (ds - xmin) / (xmax - xmin)
既然你想要scale/normalize数据,你也可以使用从数据中导出的xmin
和xmax
:
# over full array
xmin = ds.min()
xmax = ds.max()
ds_scaled = (ds - xmin) / (xmax - xmin)
或刚好超过特定维度
# over y dimension
xmin = ds.min(‘y’)
xmax = ds.max(‘y’)
ds_scaled = (ds - xmin) / (xmax - xmin)