1

scipy を使用して netcdf ファイルを書き込もうとしています。scipy の Web サイトから例をコピーしましたが、出力を見ると、奇妙な数字が表示されます。

私はこれを他のことにも試しており、「float32」として宣言した別の変数に .astype(np.float32) を指定することさえありました。

Python コード:

import numpy as np
from pylab import *
from scipy.io import netcdf
f = netcdf.netcdf_file('simple.nc', 'w')
f.history = 'Created for a test'
f.createDimension('time', 10)
time = f.createVariable('time', 'i', ('time',))
time[:] = np.arange(10)
time.units = 'days since 2008-01-01'
f.close() 

出力:

ncdump -v time simple.nc 
netcdf simple {
dimensions:
    time = 10 ;
variables:
    int time(time) ;
        time:units = "days since 2008-01-01" ;

// global attributes:
    :history = "Created for a test" ;
data:

 time = 0, 16777216, 33554432, 50331648, 67108864, 83886080, 100663296, 
    117440512, 134217728, 150994944 ;
}
4

3 に答える 3

2

これは Scipy 0.11.0 のバグで、0.12.0 で修正されました https://github.com/scipy/scipy/commit/d2b5014

于 2013-05-10T00:21:32.137 に答える
0

解決策ではなく、単なるコメント:

問題は、データ型のエンディアンに関係しているようです:

In [23]: x = np.arange(10)
In [30]: x.view('>i4')
Out[30]: 
array([        0,  16777216,  33554432,  50331648,  67108864,  83886080,
       100663296, 117440512, 134217728, 150994944])
于 2013-05-08T23:40:16.007 に答える