利用matlab 读取.npy文件
(https://github.com/kwikteam/npy-matlab/blob/master/npy-matlab/readNPYheader.m)
下面展示代码
function [arrayShape, dataType, fortranOrder, littleEndian, totalHeaderLength, npyVersion] = readNPYheader(filename)% function [arrayShape, dataType, fortranOrder, littleEndian, ...% totalHeaderLength, npyVersion] = readNPYheader(filename)%% parse the header of a .npy file and return all the info contained% therein.%% Based on spec at http://docs.scipy.org/doc/numpy-dev/neps/npy-format.html
fid = fopen(filename);
% verify that the file existsif (fid == -1) if ~isempty(dir(filename)) error('Permission denied: %s', filename); else error('File not found: %s', filename); endend
try
dtypesMatlab = {'uint8','uint16','uint32','uint64','int8','int16','int32','int64','single','double', 'logical'}; dtypesNPY = {'u1', 'u2', 'u4', 'u8', 'i1', 'i2', 'i4', 'i8', 'f4', 'f8', 'b1'}; magicString = fread(fid, [1 6], 'uint8=>uint8'); if ~all(magicString == [147,78,85,77,80,89]) error('readNPY:NotNUMPYFile', 'Error: This file does not appear to be NUMPY format based on the header.');
end
majorVersion = fread(fid, [1 1], 'uint8=>uint8'); minorVersion = fread(fid, [1 1], 'uint8=>uint8');
npyVersion = [majorVersion minorVersion];
headerLength = fread(fid, [1 1], 'uint16=>uint16');
totalHeaderLength = 10+headerLength; arrayFormat = fread(fid, [1 headerLength], 'char=>char'); % to interpret the array format info, we make some fairly strict % assumptions about its format... r = regexp(arrayFormat, '''descr''\s*:\s*''(.*?)''', 'tokens'); dtNPY = r{1}{1}; littleEndian = ~strcmp(dtNPY(1), '>'); dataType = dtypesMatlab{strcmp(dtNPY(2:3), dtypesNPY)}; r = regexp(arrayFormat, '''fortran_order''\s*:\s*(\w+)', 'tokens'); fortranOrder = strcmp(r{1}{1}, 'True'); r = regexp(arrayFormat, '''shape''\s*:\s*\((.*?)\)', 'tokens'); shapeStr = r{1}{1}; arrayShape = str2num(shapeStr(shapeStr~='L'))
fclose(fid);
catch me
fclose(fid);
rethrow(me);
end
方法二 直接用python将.npy转换为.mat
from scipy import io
mat = np.load('light_light.npy')
io.savemat('light_light.mat', {'light_light': mat})