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坐标发生变化的轴。向最右侧轴倾斜。

  • cyclic (int or float, optional) -- 周期域宽度(默认:360)。

  • 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.]]