Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ascii到NetCDF的转换_Python_Netcdf - Fatal编程技术网

Python Ascii到NetCDF的转换

Python Ascii到NetCDF的转换,python,netcdf,Python,Netcdf,我是netCDF库的新用户,因此我对这个基本问题表示歉意。 我正在尝试将一个包含4列(lon、lat、depth、velocity)的ascii文件转换为netCDF。我得到以下错误: Vp[:]=文件[:,:,:,:,:] 索引器:数组的索引太多 你能帮我找出错误的原因吗?我已经将变量的维度设置为行数。是这样吗 提前谢谢 文件很大,您可以在此处找到示例: 这里有几个问题 不要将内置函数名用作变量名,如file 不要将坐标数据放入变量中,而是放入单独的变量中 若将数据添加到NetCDF变量,则

我是netCDF库的新用户,因此我对这个基本问题表示歉意。 我正在尝试将一个包含4列(lon、lat、depth、velocity)的ascii文件转换为netCDF。我得到以下错误:

Vp[:]=文件[:,:,:,:,:] 索引器:数组的索引太多

你能帮我找出错误的原因吗?我已经将变量的维度设置为行数。是这样吗

提前谢谢

文件很大,您可以在此处找到示例:


这里有几个问题

  • 不要将内置函数名用作变量名,如
    file
  • 不要将坐标数据放入变量中,而是放入单独的变量中
  • 若将数据添加到NetCDF变量,则切片大小必须相等
  • 您当前的错误只是因为从numpy数组中询问了错误的维度,在您的示例文件中是1000,4
下面是一个有效的示例,但我没有提取正确的变量数据,因为我不知道实际的结构,并且在重塑时也要小心

from netCDF4 import Dataset
import numpy as np
import sys


input_file = np.loadtxt('test.txt', delimiter=' ')
# NC file setup
mydata = Dataset('Vp.nc', 'w', format='NETCDF4')
mydata.description = '3D VP velocity model'

# dimensions
mydata.createDimension('longitude', 128)
mydata.createDimension('latitude', 4)
lat = mydata.createVariable('latitude', 'f4','longitude')
lat.long_name = "latitude"
lat.units = "degrees_north"
lat.standard_name = "latitude"
lon = mydata.createVariable('longitude', 'f4','latitude')
lon.long_name = "longitude"
lon.units = "degrees_east"
lon.standard_name = "longitude"

## mydata.createVariable('depth', 1)

Vp = mydata.createVariable('Vp', 'f4', ('longitude','latitude'), fill_value=0)

Vp[:128,:4] = input_file[:512,3].reshape(128,4)
## lon[:] = ???
## lat[:] = ???
Vp.units = 'km/s'
from netCDF4 import Dataset
import numpy as np
import sys


input_file = np.loadtxt('test.txt', delimiter=' ')
# NC file setup
mydata = Dataset('Vp.nc', 'w', format='NETCDF4')
mydata.description = '3D VP velocity model'

# dimensions
mydata.createDimension('longitude', 128)
mydata.createDimension('latitude', 4)
lat = mydata.createVariable('latitude', 'f4','longitude')
lat.long_name = "latitude"
lat.units = "degrees_north"
lat.standard_name = "latitude"
lon = mydata.createVariable('longitude', 'f4','latitude')
lon.long_name = "longitude"
lon.units = "degrees_east"
lon.standard_name = "longitude"

## mydata.createVariable('depth', 1)

Vp = mydata.createVariable('Vp', 'f4', ('longitude','latitude'), fill_value=0)

Vp[:128,:4] = input_file[:512,3].reshape(128,4)
## lon[:] = ???
## lat[:] = ???
Vp.units = 'km/s'