【问题标题】:2D array with Python for cartopy map illustration使用 Python 的 2D 数组用于 cartopy 地图说明
【发布时间】:2020-05-26 19:49:35
【问题描述】:

使用下面的代码,我从本地保存的 netCDF 文件中读取数据。 x 和 y 变量是经度和纬度元素的一维列表。 sal_values 是一个掩码数组;列表列表see image 1 link

这绝对没问题;但我想对二维数组中的 sal_values 列表进行排序,以便根据 x 和 y 绘制我的数据。当我运行例如 sal_values [3][2] 时,我收到错误“索引 1 超出轴 0 的范围,大小为 1”,这意味着 sal_values 不是实际的二维数组。

import cartopy.crs as ccrs[enter image description here][1]
import matplotlib.pyplot as plt
import numpy as np
import netCDF4



file=r"C:\Users\CFla\Desktop\Ab_sss.nc"
d=netCDF4.Dataset(file)

x=d.variables['lon'][:]
y=d.variables['lat'][:]
sal_values=(d.variables['sss'][:])
sal_values[1][2]


我发现以下代码行似乎可以解决问题:

sal_values=(d.variables['sss'][0,:,:]) 

但我想了解切片方法。 ':' 之后的 ',' 是做什么的,为什么如果我省略 '0' 然后我再次收到错误“索引 1 超出轴 0 的范围,大小为 1”。

请问有什么好的资料可以解释一下吗? 谢谢。

【问题讨论】:

    标签: arrays list slice cartopy netcdf4


    【解决方案1】:

    见:https://numpy.org/doc/1.18/reference/arrays.indexing.html

    看来d.variables['sss']是一个3维数组;编写 d.variables['sss'][:] 为您提供完整的 3D 字段,d.variables['sss'][0,:,:] 切片第一个维度并返回完整的其他 2 个维度,因此您最终得到一个 2D 数组。

    我猜在这一点上,但如果 d.variables['sss'] 的尺寸是例如(time, lat, lon)d.variables['sss'][0,:,:] 为您提供第一次索引和完整的空间纬度/经度字段。

    【讨论】:

    • 感谢@Bart,这很有帮助。
    猜你喜欢
    • 2018-08-18
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2019-05-22
    • 2015-07-16
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多