最近开始忙了。更新的速度会放缓一些,见谅。
这部分主要讲一下Xarray内部的计算函数,可以直接对dataarray进行操作。
还是以举例子的方式来展示。
先创建一个dataarray
import xarray as xr
da = xr.DataArray(np.random.RandomState(0).randn(2, 3),[('x', ['a', 'b']), ('y', [10, 20, 30])])
print(da)
#
#array([[ 1.76405235, 0.40015721, 0.97873798],
# [ 2.2408932 , 1.86755799, -0.97727788]])
#Coordinates:
# * x (x)
# * y (y) int64 10 20 30
ex1 基本运算
首先是基本的加减乘除(以减法为例)
print(da - 3)
#
#array([[-1.23594765, -2.59984279, -2.02126202],
# [-0.7591068 , -1.13244201, -3.97727788]])
#Coordinates:
# * x (x)
# * y (y) int64 10 20 30
同时还支持python自身的一些函数
print(abs(da))
#
#array([[1.76405235, 0.40015721, 0.97873798],
# [2.2408932 , 1.86755799, 0.97727788]])
#Coordinates:
# * x (x)
# * y (y) int64 10 20 30
也支持numpy和scipy的一些计算函数(但并不是所有,很多涉及到维度或者什么的就不能了)
print(np.sin(arr))
#
#array([[ 0.9813841 , 0.38956314, 0.82979374],
# [ 0.78376151, 0.95628847, -0.82897801]])
#Coordinates:
# * x (x)
# * y (y) int64 10 20 30
可以使用where函数进行条件更改
print(xr.where(da > 0, 'positive', 'negative'))
#
#array([['positive', 'positive', 'positive'],
# ['positive', 'positive', 'negative']], dtype='
#Coordinates:
# * x (x)
# * y (y) int64 10 20 30
使用@进行矩阵乘法,使用round进行四舍五入,使用.T数组转置等等。这部分略去代码了,可以自己试验
ex2 缺测处理
这部分是针对缺测的多种处理方法:
首先建立一个带有缺测的dataarray
x = xr.DataArray([0, 1, np.nan, np.nan, 2], dims=['x'])
print(x)
#
#array([ 0., 1., nan, nan, 2.])
#Dimensions without coordinates: x
判断是否缺测,还有notnull()函数
print(x.isnull())
#
#array([False, False, True, True, False])
#Dimensions withou