首先,我對這個論壇不熟悉,所以請原諒我在這裏發佈的任何錯誤。如果你能指出我的錯誤,我會很高興,當我發佈其他東西時,我會確保不再重複。使用Python將ASCII文件轉換爲netCDF(來自ASCII文件的選擇列)
任務:使用Python將ASCII數據文件(UCAC 4 Star Catalog)轉換爲netCDF格式。只能從ASCII文件輸出一些固定數量的列到netCDF文件。
問題: 回溯(最近通話最後一個): 文件 「d:\工作1 \ FINAL \新嘗試\ txt2nc.py」 51行,在 vic_runoff [RA,SPD,:,:] =輸出; netCDF4.Variable中的文件「netCDF4.pyx」,第2821行。 setitem (netCDF4.c:35204) 文件 「C:\ Python27 \ lib中\站點包\ netCDF4_utils.py」,線路187,在 _StartCountStride ee =對範圍(啓動,停止,步驟) 文件「 C:\ Python27 \ lib \ site-packages \ numpy \ ma \ core.py「4102行,在 int raise MaskError('無法將被屏蔽的元素轉換爲Python int。') MaskError:元素到Python int。**
在此先感謝。任何幫助表示讚賞!
from __future__ import division
from netCDF4 import Dataset
import numpy as np
import os
PATH = 'D:\\Internship Work 1\\Alok Data\\ASCII'
LL = np.loadtxt('%s\\4uc001.txt' %PATH, delimiter='|', usecols =
(0,1,2,3), skiprows=0);
LL = LL[:,:]
# NC file setup
root_grp = Dataset('%s\\4uc001.nc' %PATH, 'w', format='NETCDF4')
root_grp.description = 'Star Catalog UCAC Data'
# dimensions
ra = root_grp.createDimension('ra', 32)
spd = root_grp.createDimension('spd', 80)
magm = root_grp.createDimension('magm', 96)
maga = root_grp.createDimension('maga', 120)
# variables
ra = root_grp.createVariable('ra', np.byte, ('ra',))
spd = root_grp.createVariable('spd', np.byte, ('spd',))
magm = root_grp.createVariable('magm', np.byte, ('magm'),)
maga = root_grp.createVariable('maga', np.byte, ('maga'),)
vic_runoff = root_grp.createVariable('vic_runoff', np.byte, ('ra',
'spd', 'magm', 'maga',))
ra.units = 'mas'
spd.units = 'mas'
magm.units = 'millimag'
maga.units = 'millimag'
for ra in enumerate(ra):
tempstore = np.zeros((206,4),int)
output_filename = 'D:\\Internship Work 1\\Alok Data\\ASCII\\4uc001.txt'
output = np.loadtxt(output_filename,delimiter='|',usecols = (0,1,2,3))
tempstore[:,:] = output # ensembles x months
vic_runoff[ra,spd,:,:] = tempstore[:,:] # write all ensembles to netcdf
print('work done')
感謝您的幫助!我一定會嘗試一下讓你知道 –
非常感謝!我嘗試過使用'pandas'和'xarray'並且現在正在工作,我將很快爲其他人發佈解決方案! –