Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xarray从横向/纵向点列表创建数据集(非方形!)_Python_Python 3.x_Numpy_Python Xarray - Fatal编程技术网

Python xarray从横向/纵向点列表创建数据集(非方形!)

Python xarray从横向/纵向点列表创建数据集(非方形!),python,python-3.x,numpy,python-xarray,Python,Python 3.x,Numpy,Python Xarray,我需要从不规则的纬度/经度列表中创建一个数据集。这些已经被堆叠成一个“像素”列表,我需要将其取消堆叠并转换回一个规则的纬度/经度网格。因为网格中的每个像素的数据值都不完整,所以我需要将缺少的值填充为np.nan 我在创建带有不规则横向点(像素)列表的xr.Dataset时遇到问题 可复制示例: 创建我的数据外观的示例 注意:数据不完整,它的形状是(99,),因此我不能简单地重塑数据以适应独特的纬度/经度 将numpy导入为np 将xarray作为xr导入 唯一纬度=np.arange(0,10)

我需要从不规则的纬度/经度列表中创建一个数据集。这些已经被堆叠成一个“像素”列表,我需要将其取消堆叠并转换回一个规则的纬度/经度网格。因为网格中的每个像素的数据值都不完整,所以我需要将缺少的值填充为
np.nan

我在创建带有不规则横向点(像素)列表的
xr.Dataset
时遇到问题

可复制示例: 创建我的数据外观的示例 注意:数据不完整,它的形状是
(99,)
,因此我不能简单地重塑数据以适应独特的纬度/经度

将numpy导入为np
将xarray作为xr导入
唯一纬度=np.arange(0,10)
唯一经度=np.arange(0,10)
_=np.数组((np.网格网格(纬度、经度)).T.重塑(-1,2)
#我们没有完整的像素网格
像素=[:99]
纬度=像素[:,0]
经度=像素[:,1]
像素_id=[i代表范围内的i(len(像素))]
#缺少一个数据点(仅99像素,因此无法简单地重塑数据)
data=np.random.choice([0,1,2],(pixels.shape[0]))
坐标={'pixel':pixels}
dims=['像素']
xr.Dataset({'data':(dims,数据)})
出[]:
尺寸:(像素:99)
不带坐标的尺寸:像素
数据变量:
数据(像素)int64 1 2 0 1 0 1 1 1 0 1 1 2 1。。。2 2 0 0 1 2 1 2 0 1 1 2
这是我所掌握的数据。我有一个长度为99的数组。但每一个值都对应一个纬度和一个经度

像素[:5]
出[]:
数组([[0,0],
[0, 1],
[0, 2],
[0, 3],
[0, 4]])
我想要的是一个带有适当标记的
lat
/
lon
坐标的
xr.Dataset
data=np.random.choice([0,1,2],(100)).astype('float'))
数据=数据。重塑(len(唯一纬度),len(唯一经度))
#请记住,上述数据中缺少一个数据点
数据[np.Unlavel_index(99,data.shape)]=np.nan
正确的直径=['lat','lon']
更正坐标={'lat':唯一纬度,'lon':唯一经度}
正确的数据集({'data':(correct\u dims,data)},coords=correct\u coords)
正确的
出[]:
尺寸:(横向:10,纵向:10)
协调:
*拉丁美洲(拉丁美洲)国际64 01 2 3 4 5 6 7 8 9
*lon(lon)int64 01 2 3 4 5 6 7 8 9
数据变量:
数据(纬度、经度)浮动64 0.0 1.0 0 0.0 1.0 0 0.0 2.0。。。2.0 1.0 1.0 2.0 nan

IIUC,您当前的数据稀疏。您尝试过堆叠/取消堆叠吗?但我无法将二维
pixel
属性指定为原始
数据集的维度:
coords={'pixel':pixels},dims=['pixel']
,否则可以取消堆叠!你能先把它转换成多重索引吗?这就是您可以取消堆栈的格式