- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想获取栅格(卫星图像)数据,并构建一个Dataset
或DataArray
,以加快我的图像处理速度(我必须处理多-波段,多日期卫星图像很多)。
数据来自每个图像日期的单独波段,我了解如何将每个波段日期转换为 xarray-DataArray
。我认为每个波段都有一个变量是最有意义的,并且每个波段内都有空间 (x, y) 和时间维度。
但是,我不知道该怎么做。
我一直在与一些虚拟乐队合作,试图解决这个问题,因此将包括在内以阐明我的数据是什么样子以及我正在尝试做什么。
# Set up dummy 3 x 3 array
dA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Create 4 dummy images; 2 bands for each of 2 dates (using bands 4 and 5,
# because they're useful for vegetation measures)
d1_b4 = xr.DataArray((dA + 140),
coords={'x': ['1', '2', '3'], 'y': ['a', 'b', 'c']}, dims=('x', 'y'))
d1_b5 = xr.DataArray((dA + 150),
coords={'x': ['1', '2', '3'], 'y': ['a', 'b', 'c']}, dims=('x', 'y'))
d2_b4 = xr.DataArray((dA + 240),
coords={'x': ['1', '2', '3'], 'y': ['a', 'b', 'c']}, dims=('x', 'y'))
d2_b5 = xr.DataArray((dA + 250),
coords={'x': ['1', '2', '3'], 'y': ['a', 'b', 'c']}, dims=('x', 'y'))
# dummy values designed so I can keep track of which array is going
# where while I learn this
然后我想将它们组合成一个 DataArray
,有两个变量(Band4 和 Band5),每个变量包含两个图像日期...但不知道如何进行。
创建/导入数组时是否需要添加更多坐标或维度,然后沿着这些维度concat
?
最佳答案
正如 jhamman 所提到的,很大程度上取决于您的数据来自何处来确定如何组合它。这是组合您提供的数据的一种方法,但还有其他方法。
合并这些数据需要多个步骤。首先,为每个 DataArrays
命名,并加上您希望它在其中结束的变量的名称。
d1_b4.name = 'band4'
d1_b5.name = 'band5'
d2_b4.name = 'band4'
d2_b5.name = 'band5'
然后使用xr.merge
将它们放入 xarray.Dataset
中。一个 Dataset
包含多个 xarray.DataArray
,它们可以共享它们的部分或全部维度。
d1 = xr.merge([d1_b4, d1_b5])
d2 = xr.merge([d2_b4, d2_b5])
<xarray.Dataset>
Dimensions: (x: 3, y: 3)
Coordinates:
* x (x) <U1 '1' '2' '3'
* y (y) <U1 'a' 'b' 'c'
Data variables:
band4 (x, y) int64 241 242 243 244 245 246 247 248 249
band5 (x, y) int64 251 252 253 254 255 256 257 258 259
最后,合并不同日期的数据。我们需要一个新的维度 time
,每个日期都有坐标值。我们可以使用 xr.concat
一步完成此操作.
xr.concat([d1, d2], dim=pd.Index([1990, 1991], name='time'))
<xarray.Dataset>
Dimensions: (time: 2, x: 3, y: 3)
Coordinates:
* x (x) <U1 '1' '2' '3'
* y (y) <U1 'a' 'b' 'c'
* time (time) int64 1990 1991
Data variables:
band4 (time, x, y) int64 141 142 143 144 145 146 147 148 149 241 242 ...
band5 (time, x, y) int64 151 152 153 154 155 156 157 158 159 251 252 ...
关于python-xarray:如何将多个波段和日期的单个波段栅格数据转换为 xarray-Dataset 或 DataArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198288/
我正在尝试使用有关单元格的一些元信息填充 DataArray,以将其添加到数据集中。 airtemps = xr.tutorial.load_dataset('air_temperature') ai
DataArray.mean 不保留取决于应用平均值的维度的坐标。 注意:XLAT 和 XLONG 与时间无关;然而,一些 netcdf 文件具有沿这两个方向的时间坐标。 我有这个 netcdf 文件
我的函数内部有一个 DataFrame: using DataFrames myservs = DataFrame(serverName = ["elmo", "bigBird", "Oscar",
我无法弄清楚 xarray 的一些基本使用模式。这是我过去可以在 numpy 中轻松完成的事情:(在另一个数组中设置满足特定条件的元素) import numpy as np q_index = np
在 xarray 中使用 DataArray 对象是查找所有具有值 != 0 的单元格的最佳方法。 例如在 Pandas 我会做 df.loc[df.col1 > 0] 我的具体例子是我试图查看 3
对于我的 Python 包 numericalmodel这应该有助于对简单的数值模型进行原型(prototype)设计,我为自描述数据集编写了类。我最近偶然发现了很棒的 xarray library现
很简单的问题,但我在网上找不到答案。我有一个 Dataset我只想添加一个名为 DataArray到它。类似 dataset.add({"new_array": new_data_array}) .我
假设我有以下 DataArray arr = xarray.DataArray(np.arange(6).reshape(2,3), dims=['A'
假设以下代码具有 xarray.DataArray有两个维度和一个坐标: import numpy as np from xarray import DataArray data = np.rando
我有一个 xarray DataArray,它的形状如下所示 (1,5,73,144,17),我正在尝试删除或删除“级别”坐标。所以,最终,我需要变量具有形状 = (1,5,73,144)。 stdn
我有一个 3 维 xarray DataArray,其中两个维度代表 x-y 网格,第三个维度代表彼此“堆叠”的网格层数。空的 DataArray 看起来像这样: import xarray as x
我正在尝试向 DataArray 添加一个具有一定长度的新维度。 我尝试使用expand_dims方法,其文档表明我应该能够做到这一点 http://xarray.pydata.org/en/stab
我正在使用 laravel 的 Model::create() 函数在数据库中创建一个新条目,但我传递到该函数的数组失败,因为它删除了其中一行。 这是我的数组全静态。这也符合我的数据库表的样子。 $d
我有一个 xarray.DataArray: array([ 5.437614e+01, 2.090367e+02, 3.687384e+02, ..., 5.121467e-02,
我有一个一维的 DataArray,每个值对应一个 ID。我正在尝试以相同的格式创建一个新数组,其中包含值超出限制的任何情况下的值和 ID 我尝试过使用xr.DataArray.where(condi
我需要向 DataArray 添加一个维度,填充新维度中的值。这是原始数组。 a_size = 10 a_coords = np.linspace(0, 1, a_size) b_size = 5 b
我对python有点陌生。我有一个 xarray DataArray 包含一个由浮点数组成的变量。这些浮点数应该是秒。我想将这些浮点数添加到给定日期: 2021-01-01 00:00:00 + 1
我有一个名为 rio 的 DataArray 对象。 In [59]: rio Out[59]: array([[[0, 0, ..., 0, 0], [0, 0, ..., 0,
我已经从多个源 hdf5 文件构建了一个巨大的 dask 数组。 假设数据仅来自一个 hdf5 文件: import dask.array as da import h5py import xarra
关注 How to add vectors to the columns of some array in Julia? ,我想对 DataArrays 进行一些类似的说明。 让 y=randn(10
我是一名优秀的程序员,十分优秀!