numpy - 如何检查两个 xarray 对象是否具有相同的维度和坐标(但不一定是值)

标签 numpy python-xarray

我有 2 个 xarray 对象。我想检查这两个数组是否具有相同的尺寸和坐标。但两个对象不需要具有相同的值或元数据。

例如:

import xarray as xr

arr1_data = [[1, 2], [3, 4]]
arr2_data = [[5, 6], [7, 8]]

arr1 = xr.DataArray(arr1_data, dims=["y", "x"], coords={"y": ["coord1", "coord2"]})
arr2 = xr.DataArray(arr2_data, dims=["y", "x"], coords={"y": ["coord1", "coord2"]})

compare_xarray_objects(arr1, arr2)  # Should return True

.dims 属性返回一个元组,因此很容易判断维度是否相同。但是 .coords 属性返回一个 DataArrayCoordinates 对象,我不知道如何将 DataArrayCoords 对象与另一个对象进行比较。

最佳答案

对于像示例中您尝试比较索引坐标的情况,只需使用 xr.align使用 join='exact' 参数。

xr.align(arr1, arr2, join='exact')  # will raise a ValueError if not aligned

如果您还尝试比较非索引坐标,您也可以使用 xr.testing.assert_equal 。这将检查所有坐标,包括那些不在数组维度中的坐标(例如,如果您有另一个由 xy 索引的坐标 z) 。但是,它比 xr.align 更挑剔,因为它要求维度顺序相同。如果这是一个问题,您可以循环遍历非索引坐标并使用此测试函数来检查每个坐标的相等性。

关于numpy - 如何检查两个 xarray 对象是否具有相同的维度和坐标(但不一定是值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70973092/

相关文章:

python - 检查两个numpy数组python中有多少元素相等

python - Numpy:根据满足条件的组拆分数组

python - 重新排列基于python中列表的数组元素

python - Xarray 查找每个时间步长的最大/最小值的纬度/经度坐标

python - 沿 xarray 中的单个维度对多个坐标进行分组

python - X 阵列 : Loading several CSV files into a dataset

python - 将 pandas 系列的 numpy 矩阵转换为多索引系列

Python NumPy : Efficiently get rows containing min value of column for each unique tuple of 3 other columns

python - 为什么 numpy.angle() 不是 ufunc?

python - 基于 xarray 的数据库有哪些可能性?