前言:
当前小伙伴们对“python ncl包”大体比较讲究,我们都想要剖析一些“python ncl包”的相关资讯。那么小编同时在网摘上搜集了一些有关“python ncl包””的相关资讯,希望同学们能喜欢,我们快快来了解一下吧!Numpy读写二进制数据Numpy.fromfile()
numpy.fromfile(file, dtype=float, count=-1, sep='')可以高效读取已知数据类型的二进制文件。file表示文件名,dtype表示数据类型(包括大小和字节顺序),count表示读入数据长度,sep表示文本文件的分隔符,默认为空表示读取二进制数据。
>>>type = np.float32
>>>data = np.fromfile(file,dtype=type)
>>>lon , lat = data.reshape(2,2288,2288)
>>> lat
array([300., 300., 300., ..., 300., 300., 300.], dtype=float32)
>>> lat.dtype
dtype('float32')
前面提到数据类型除了包括大小,还包括字节顺序。字节顺序是通过对数据类型预先设定"<"或">"来决定的。"<"意味着小端法LittleEndian(最小值存储在最小的地址,即低位组放在最前面)。">"意味着大端法BigEndian(最重要的字节存储在最小的地址,即高位组放在最前面)。这里读入一个BigEndian数据,并强制转换其类型。
>>> cld = np.fromfile(file,dtype=">f4")
>>> cld
array([nan, nan, nan, ..., nan, nan, nan], dtype=float32)
>>> cld.dtype
dtype('>f4') #BigEndian
>>> t2 = np.dtype("<f4")
>>> cld = cld.astype(t2) #强制转换数据类型
>>> cld.dtype
dtype('float32')
NUmpy.tofile()
ndarray.tofile(fid, sep="", format="%s")可用于输出二进制文件(或者文本文件,sep,format),数据总是以“C”的顺序输出。
>>> cld.tofile(“test_out.bin”)
NCL二进制数据I/OFortran顺序
Direct Access:
data = fbindirread(path,rec,dim,type)
Sequential Access:
data = fbinrecread(path,rec,dim,type)
C 顺序
Cray (C block IO write):
data = cbinread(path,dim,type)
Cray Sequential:
data = craybinrecread(path,rec,dim,type)
此外同样需要注意big-endian 和 little-endian的区别,可以通过命令
setfileoption("bin","ReadByteOrder","LittleEndian")setfileoption("bin","WriteByteOrder","BigEndian")
控制文件的正确读取。
标签: #python ncl包