如何修改xarray DataArray中orientation维度的坐标值?
解决xarray修改坐标标签值的问题
你之前用rename方法没效果是因为**rename是用来修改维度名称或变量名称的,不是修改坐标的标签值**——比如你想把维度名orientation改成别的才用它,而不是改这个维度下的具体坐标值。
给你两种可行的方法:
方法一:直接重新赋值坐标标签
如果已经明确知道新的坐标值列表,直接用assign_coords方法覆盖原坐标:
import xarray as xr import numpy as np da = xr.DataArray( data=np.ones((10,10,2)), dims=['x', 'y', 'orientation'], coords={ "orientation": [1, 2] } ) # 修改坐标标签 da = da.assign_coords(orientation=['one', 'two'])
方法二:通过字典映射修改
如果需要基于原坐标值做映射(比如原坐标是动态生成的,不是固定的1、2),可以先定义映射字典,再生成新的坐标列表赋值:
coord_map = {1: 'one', 2: 'two'} # 基于原坐标值生成新标签 new_orient_labels = [coord_map[val] for val in da.coords['orientation'].values] da = da.assign_coords(orientation=new_orient_labels)
改完之后你可以用print(da.coords['orientation'])验证,输出会是:
<xarray.DataArray 'orientation' (orientation: 2)> array(['one', 'two'], dtype='<U3') Coordinates: * orientation (orientation) <U3 'one' 'two'
内容的提问来源于stack exchange,提问作者Austin Benny
相关产品推荐
相关产品推荐

