2014-10-21 5 views
2

Я экспериментирую с библиотекой xray (N-D помечены массивами и наборами данных на Python). Я использую транспонирование для изменения порядка индекса, но не приводит к изменению.Передача xray Dataset с использованием файла NetCDF

Следующий сегмент кода обращается к файлу NetCDF и присваивает набору данных xray, извлекает подмножество данных, создает Pandas DataFrame и выводит результаты в файл CSV.

Далее, размеры набора данных xray переносятся и выполняют один и тот же процесс извлечения подмножества, создают DataFrame и вывод CSV. Результат идентичен.

import pandas as pd 
import xray 

# access NetCDF over HTTP 
ds = xray.open_dataset('http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/noaa.oisst.v2/sst.mnmean.nc') 

# Extract subset of data using indexes: time, lat, lon 
sst = ds['sst'][133:157, 80:100, 180:260] 

# Convert to Dataframe 
df = sst.to_dataframe() 

# Outut to csv format 
df.to_csv('c:/dev/sst1.csv', mode='w') 

''' 
lat lon time sst 
9.5 180.5 1993-01-01 00:00:00 26.799999401 
9.5 180.5 1993-02-01 00:00:00 27.0699993949 
9.5 180.5 1993-03-01 00:00:00 27.1199993938 
9.5 180.5 1993-04-01 00:00:00 27.379999388 
9.5 180.5 1993-05-01 00:00:00 27.8499993775 
9.5 180.5 1993-06-01 00:00:00 28.1699993704 
9.5 180.5 1993-07-01 00:00:00 28.2799993679 
9.5 180.5 1993-08-01 00:00:00 28.7999993563 
9.5 180.5 1993-09-01 00:00:00 29.2099993471 
9.5 180.5 1993-10-01 00:00:00 29.2199993469 
9.5 180.5 1993-11-01 00:00:00 28.7099993583 
9.5 180.5 1993-12-01 00:00:00 28.0799993724 
9.5 180.5 1994-01-01 00:00:00 27.7999993786 
9.5 180.5 1994-02-01 00:00:00 27.649999382 
9.5 180.5 1994-03-01 00:00:00 27.7599993795 
9.5 180.5 1994-04-01 00:00:00 28.1099993717 
9.5 180.5 1994-05-01 00:00:00 28.3799993657 
9.5 180.5 1994-06-01 00:00:00 28.3099993672 
9.5 180.5 1994-07-01 00:00:00 28.3599993661 
9.5 180.5 1994-08-01 00:00:00 29.1899993476 
9.5 180.5 1994-09-01 00:00:00 29.6899993364 
9.5 180.5 1994-10-01 00:00:00 29.4799993411 
9.5 180.5 1994-11-01 00:00:00 29.0999993496 
9.5 180.5 1994-12-01 00:00:00 28.4199993648 
9.5 181.5 1993-01-01 00:00:00 26.8399994001 
9.5 181.5 1993-02-01 00:00:00 27.1399993934 
9.5 181.5 1993-03-01 00:00:00 27.1399993934 
... 
''' 

# Transpose dimensions 
ds_T = ds.transpose('lon', 'lat', 'time', 'nbnds') 

# Extract subset the data using indexes: lon, lat, time 
sst = ds_T['sst'][180:260, 80:100, 133:157] 

# Convert to Dataframe 
df = sst.to_dataframe() 

# Outut to csv format 
df.to_csv('c:/dev/sst2.csv', mode='w') 

''' 
lat lon time sst 
9.5 180.5 1993-01-01 00:00:00 26.799999401 
9.5 180.5 1993-02-01 00:00:00 27.0699993949 
9.5 180.5 1993-03-01 00:00:00 27.1199993938 
9.5 180.5 1993-04-01 00:00:00 27.379999388 
9.5 180.5 1993-05-01 00:00:00 27.8499993775 
9.5 180.5 1993-06-01 00:00:00 28.1699993704 
9.5 180.5 1993-07-01 00:00:00 28.2799993679 
9.5 180.5 1993-08-01 00:00:00 28.7999993563 
9.5 180.5 1993-09-01 00:00:00 29.2099993471 
9.5 180.5 1993-10-01 00:00:00 29.2199993469 
9.5 180.5 1993-11-01 00:00:00 28.7099993583 
9.5 180.5 1993-12-01 00:00:00 28.0799993724 
9.5 180.5 1994-01-01 00:00:00 27.7999993786 
9.5 180.5 1994-02-01 00:00:00 27.649999382 
9.5 180.5 1994-03-01 00:00:00 27.7599993795 
9.5 180.5 1994-04-01 00:00:00 28.1099993717 
9.5 180.5 1994-05-01 00:00:00 28.3799993657 
9.5 180.5 1994-06-01 00:00:00 28.3099993672 
9.5 180.5 1994-07-01 00:00:00 28.3599993661 
9.5 180.5 1994-08-01 00:00:00 29.1899993476 
9.5 180.5 1994-09-01 00:00:00 29.6899993364 
9.5 180.5 1994-10-01 00:00:00 29.4799993411 
9.5 180.5 1994-11-01 00:00:00 29.0999993496 
9.5 180.5 1994-12-01 00:00:00 28.4199993648 
9.5 181.5 1993-01-01 00:00:00 26.8399994001 
9.5 181.5 1993-02-01 00:00:00 27.1399993934 
9.5 181.5 1993-03-01 00:00:00 27.1399993934 
... 
''' 

ответ

2

Я ответил на этот вопрос в списке рассылки рентгенологической уже, но вкратце, это ошибка: https://github.com/xray/xray/issues/260

Это исправлено в последней версии рентгеновской (0.3.1).

Смежные вопросы