带有 Python 的二维数组,用于 cartopy 地图插图
2D array with Python for cartopy map illustration
使用下面的代码,我从本地保存的 netCDF 文件中读取数据。
x 和 y 变量是经度和纬度元素的一维列表。
sal_values 相反是一个掩码数组;列表列表 see image 1 link.
这绝对没问题;但我想对二维数组中的 sal_values 列表进行排序,以便根据 x 和 y 绘制我的数据。当我 运行 例如 sal_values [3][2] 我收到错误 "index 1 is out of bounds for axis 0 with size 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' 然后我再次收到错误 "index 1 is out of bounds for axis 0 with size 1"。
请问有没有很好的资源来解释这个。
谢谢。
参见:https://numpy.org/doc/1.18/reference/arrays.indexing.html
好像d.variables['sss']
是一个3维数组;写 d.variables['sss'][:]
给你完整的 3D 字段,d.variables['sss'][0,:,:]
切片第一个维度和 returns 完整的其他 2 个维度,所以你最终得到一个 2D 数组。
我在猜测这一点,但是如果 d.variables['sss']
的维度是例如(time, lat, lon)
, d.variables['sss'][0,:,:]
给你第一个时间索引和完整的空间 lat/lon 字段。
使用下面的代码,我从本地保存的 netCDF 文件中读取数据。 x 和 y 变量是经度和纬度元素的一维列表。 sal_values 相反是一个掩码数组;列表列表 see image 1 link.
这绝对没问题;但我想对二维数组中的 sal_values 列表进行排序,以便根据 x 和 y 绘制我的数据。当我 运行 例如 sal_values [3][2] 我收到错误 "index 1 is out of bounds for axis 0 with size 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' 然后我再次收到错误 "index 1 is out of bounds for axis 0 with size 1"。
请问有没有很好的资源来解释这个。 谢谢。
参见:https://numpy.org/doc/1.18/reference/arrays.indexing.html
好像d.variables['sss']
是一个3维数组;写 d.variables['sss'][:]
给你完整的 3D 字段,d.variables['sss'][0,:,:]
切片第一个维度和 returns 完整的其他 2 个维度,所以你最终得到一个 2D 数组。
我在猜测这一点,但是如果 d.variables['sss']
的维度是例如(time, lat, lon)
, d.variables['sss'][0,:,:]
给你第一个时间索引和完整的空间 lat/lon 字段。