python-3.x - python Xarray长度不匹配
问题描述
我正在学习 Xarray 库,并且正在尝试为 3D 数据创建 Xarray。以下代码段不起作用:
>>> colx = ['c1', 'c2', 'c3', 'c4']
>>> coly = ['a1', 'a2', 'a3']
>>> colz = ['b1', 'b2']
>>> t = xr.DataArray(np.zeros((4,3,2)),dims = {'x', 'y','z'}, coords={'x':colx, 'y': coly, 'z': colz})
>>> t
ValueError: conflicting sizes for dimension 'x': length 3 on the data but length 4 on coordinate 'x'
以下代码有效,但我需要围绕 x、y、z 维度的长度进行置换以创建 Xarray。尺寸 (4,3,2) 被置换为 (3,2,4)。
>>> colx = ['c1', 'c2', 'c3', 'c4']
>>> coly = ['a1', 'a2', 'a3']
>>> colz = ['b1', 'b2']
>>> t = xr.DataArray(np.zeros((4,3,2)),dims = {'x', 'y','z'}, coords={'x':coly, 'y': colz, 'z': colx})
>>> t
<xarray.DataArray (z: 4, x: 3, y: 2)>
array([[[0., 0.],
[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.],
[0., 0.]]])
Coordinates:
* x (x) <U2 'a1' 'a2' 'a3'
* y (y) <U2 'b1' 'b2'
* z (z) <U2 'c1' 'c2' 'c3' 'c4'
- 这是正常的吗?
- 为什么会这样?
- 排列如何适用于高维数据?
解决方案
将 dims 指定为列表,例如 dims=['x', 'y', 'z'],而不是 set 可以解决问题,请参阅 spencerclark 的评论。
推荐阅读
- ansible - 如何从 ansible playbook 确定命令行选项
- vulkan - Vulkan:在多帧缓冲区的情况下,我应该为每个着色器统一创建多个 VkBuffers 吗?
- ruby-on-rails - ActionController::InvalidAuthenticityToken 时如何测试重定向
- scala - 如何访问 replaceAllIn() 计数器?
- python - 神经网络根本没有训练
- apache - 使用带有 Xampp 的 Windows 2016 服务器托管多个网站
- keras - 为什么 Keras 的 MSE 与我计算的不一样?
- python - read_gbq 函数中 REGEXP_EXTRACT 中的正则表达式失败
- python - 如何解压缩 zip 文件并将文件复制到不同的不同文件夹中?
- sql - Oracle/RDBMS 增量查询引擎