cartopy.util.add_cyclic#
- cartopy.util.add_cyclic(data, x=None, y=None, axis=-1, cyclic=360, precision=0.0001)[源代码]#
将循环点添加到数组中,并可选地添加相应的x/经度和y/纬度坐标。
检查第一个和最后一个x坐标之间的所有差异
axis
为小于precision
.- 参数:
data (ndarray) -- 要添加循环点的n维数据数组。
x (ndarray, optional) -- 一个n维数组,指定要添加循环点的维度的x坐标值,即通常是星号。切换到无。 如果
x
然后给出 add_cyclic 通过检查第一个和最后一个坐标之间的所有差是否小于,来检查循环点是否已经存在precision
.如果检测到循环点,则不添加点。 如果x
是一维或二维的,x.shape[-1]
必须等于data.shape[axis]
否则x.shape[axis]
必须等于data.shape[axis]
.y (ndarray, optional) -- 具有y坐标(通常是纬度)值的n维数组。循环点只是复制最后一列。切换到无。 如果出现以下情况,则不添加循环点
y
是一维的。如果y
是2维的,y.shape[-1]
必须等于data.shape[axis]
否则y.shape[axis]
必须等于data.shape[axis]
.axis (int, optional) -- 指定要添加循环点的数组轴,即x坐标发生变化的轴。向最右侧轴倾斜。
precision (float, optional) -- 检测循环点的第一个和最后一个x坐标之间的最大差(默认:1 e-4)。
- 返回:
cyclic_data --添加了循环点的数据数组。
cyclic_x --带有循环点的x坐标,只有当
x
已提供关键字。cyclic_y --重复循环轴最后一列的y坐标,仅在以下情况下返回
x
是2维或n维的,y
已提供关键字。
示例
向数据数组添加循环点,其中循环维度是最右边的维度。
>>> import numpy as np >>> data = np.ones([5, 6]) * np.arange(6) >>> cyclic_data = add_cyclic(data) >>> print(cyclic_data) [[0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.]]
将循环点添加到数据数组和关联的x坐标。
>>> lons = np.arange(0, 360, 60) >>> cyclic_data, cyclic_lons = add_cyclic(data, x=lons) >>> print(cyclic_data) [[0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.]] >>> print(cyclic_lons) [ 0 60 120 180 240 300 360]
将循环点添加到数据数组和相关的2维x坐标。
>>> lons = np.arange(0, 360, 60) >>> lats = np.arange(-90, 90, 180/5) >>> lon2d, lat2d = np.meshgrid(lons, lats) >>> cyclic_data, cyclic_lon2d = add_cyclic(data, x=lon2d) >>> print(cyclic_data) [[0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.]] >>> print(cyclic_lon2d) [[ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360]]
将循环点添加到数据数组以及相关的2维x和y坐标。
>>> lons = np.arange(0, 360, 60) >>> lats = np.arange(-90, 90, 180/5) >>> lon2d, lat2d = np.meshgrid(lons, lats) >>> cyclic_data, cyclic_lon2d, cyclic_lat2d = add_cyclic( ... data, x=lon2d, y=lat2d) >>> print(cyclic_data) [[0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.] [0. 1. 2. 3. 4. 5. 0.]] >>> print(cyclic_lon2d) [[ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360] [ 0 60 120 180 240 300 360]] >>> print(cyclic_lat2d) [[-90. -90. -90. -90. -90. -90. -90.] [-54. -54. -54. -54. -54. -54. -54.] [-18. -18. -18. -18. -18. -18. -18.] [ 18. 18. 18. 18. 18. 18. 18.] [ 54. 54. 54. 54. 54. 54. 54.]]
如果在x中检测到循环点,则不添加循环点。
>>> lons = np.arange(0, 361, 72) >>> lats = np.arange(-90, 90, 180/5) >>> lon2d, lat2d = np.meshgrid(lons, lats) >>> cyclic_data, cyclic_lon2d, cyclic_lat2d = add_cyclic( ... data, x=lon2d, y=lat2d) >>> print(cyclic_data) [[0. 1. 2. 3. 4. 5.] [0. 1. 2. 3. 4. 5.] [0. 1. 2. 3. 4. 5.] [0. 1. 2. 3. 4. 5.] [0. 1. 2. 3. 4. 5.]] >>> print(cyclic_lon2d) [[ 0 72 144 216 288 360] [ 0 72 144 216 288 360] [ 0 72 144 216 288 360] [ 0 72 144 216 288 360] [ 0 72 144 216 288 360]] >>> print(cyclic_lat2d) [[-90. -90. -90. -90. -90. -90.] [-54. -54. -54. -54. -54. -54.] [-18. -18. -18. -18. -18. -18.] [ 18. 18. 18. 18. 18. 18.] [ 54. 54. 54. 54. 54. 54.]]