1

uint特定の構造 (最初の項目は MATLAB 、2 番目の値は MATLAB uint、残りの値はfloat)を持つ、さまざまな値の型を保持する 1D 配列を持つ単純な小さなファイルがあるとします。

Python のファイルからこのような異種の型の配列を読み取るにはどうすればよいですか?

MATLAB での同等のコードを以下に示します。

function M = load_float_matrix(fileName)

fid = fopen(fileName);
if fid < 0
    error(['Error during opening the file ' fileName]);
end

rows = fread(fid, 1, 'uint');
cols = fread(fid, 1, 'uint');
data = fread(fid, inf, 'float');

M = reshape(data, [cols rows])';

fclose(fid);

end

注:このスレッドuint32では、3 つの連続する値を読み取る次の方法について説明します。

f = open(...)
import array
a = array.array("L")  # L is the typecode for uint32
a.fromfile(f, 3)

しかし、 L が のタイプコードであることをどのように知ることができuint32ますか? 他のタイプはどうですか?(例float)。

また、から連続した値を読み取るにはどうすればよいfですか? a.fromfileファイル内の読み取りポインターを前方に移動しますか?

4

1 に答える 1

2

ナンパしてみてください。

以下は、その方法の 1 つです。

import numpy as np
f = open(filename,"r")
N = np.fromfile(fp,dtype=np.int32,count=2)
a = np.fromfile(fp,dtype=np.float64)
a = np.resize(a,N)

これにより、混合形式/タイプ (テキスト + バイナリ) ファイルを読み取ることもできます。dtype オプションを適切にフォーマットすることで、3 行目と 4 行目を組み合わせることができます。

于 2013-04-29T01:41:24.353 に答える