-1

2次元で構成された衛星データがたくさんあります。

(H5 を緯度情報を含まない 2 次元配列データに変換し、Lat/Lon 情報データを追加で作成しました。)

1 つのデータで実際の Lat/Lon 調整とグリッド調整を知っています。

Python で 2D サテライト ファイルを部分的に読み取るにはどうすればよいですか?

「numpy.fromfile」は通常、バイナリ ファイルの読み取りに使用されました。

オプションを numpy.fromfile の count として使用すると、バイナリ ファイルを部分的に読み取ることができます。

ただし、保存メモリ用に1つのデータで先頭のレコードをスキップしたい。

たとえば、次のような 3x3 2d データがあります。

パイソン

a= [[1,2,3] [4,5,6] [7,8,9]]

Python で a[3][0] を読みました。(結果 = 7)

Fortran でファイルを読み込むときは、「recl, rec」を使用しました。

フォートラン

open(1, file='exsmaple.bin', access='direct', recl=4) ! recl=4 は 4 つの btype を意味します

read(1, rec=lat*x-lon) ファイル名

閉じる(1)

lat は、データ内の緯度の位置を意味します。(上記の例では緯度 = 3、Fortran では開始番号は 1 です。)

lon は、データ内の経度の位置を意味します。(上記の例では lon = 1 です。Fortran では開始番号は 1 です。)

×はいいえです。行。(x = 3、上記の例では、配列は 3x3 です)

ファイルを読み取ることができ、4 バイトのメモリしか使用しません。

Pythonで同様の方法を知りたいです。

時間と記憶を節約するために特別な情報を教えてください。

私の質問を読んでくれてありがとう。

2016.10.28. 解決

python データ = [1,2,3,4,5,6,7,8,9]、dtype = int8、ファイル名 = 名前

a = np.memmap(name, dtype='int8', mode='r', shape=(1), オフセット=6)

[0]を印刷

結果 : 7

4

2 に答える 2

0

あなたの説明に従うのは難しいです。適切なコードのインデントは、英語の問題を解決するのに役立ちます。

したがって、H5 ファイルにデータがあります。最も簡単な方法は、h5pyそれを Python/numpy セッションにロードし、それらの配列から必要なデータを選択することです。

しかし、このデータの一部を「プレーンな」バイナリ ファイルに書き込んだように聞こえます。あなたがそれをどのようにやったかを知るのに役立つかもしれません。また、この 2d はどのようにですか?

np.fromfile1d であるかのようにファイルを読み取ります。このファイルをいくつかまで読めますかcount? そして正しいdtype

np.fromfile開いているファイルを受け入れます。seekしたがって、ファイルを開き、使用して前方にスキップし、countそこからアイテムを読み取ることができると思います。しかし、私はそのアイデアをテストしていません。

于 2016-10-20T18:01:00.407 に答える
0

.h5 ファイルを読み取るには:

import h5py
ds = h5py.File(filename, "r")
variable = ds['variable_name']
于 2016-10-20T12:19:17.950 に答える