3

np.fromfile() の最大ファイル サイズがある場合は? 約 2.1e9 レコード (各レコードには 5 つの値があります) を持つ 48GB のファイルを読み込もうとしています。

カウントを 8e7 に制限すると機能します。

fromfile(filename, dtp, int(8e7))
Out[69]: 
array([(1, 244025.0, 1.1666666269302368, 360.1666564941406, 50.0),
       (2, 244025.0, 1.1666666269302368, 360.5, 50.0),
       (3, 244025.0, 1.1666666269302368, 360.8333435058594, 50.0), ...,
       (255138, 244131.0, 1128.9346923828125, 461.38494873046875, 49.5),
       (255139, 244131.0, 1143.77783203125, 473.2532958984375, 49.5),
       (255140, 244131.0, 1150.4803466796875, 464.6799011230469, 49.5)], 
      dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')]) 

ただし、カウントが 9e7 に設定されている場合、すべての値はゼロとして読み取られます。

In [70]: fromfile(filename, dtp, int(9e7))
Out[70]: 
array([(0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0),
       (0, 0.0, 0.0, 0.0, 0.0), ..., (0, 0.0, 0.0, 0.0, 0.0),
       (0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0)], 
      dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')])
4

2 に答える 2

2

確かにMac OS Xのバグのようです。

numpy の次のバグを参照してください: https://github.com/numpy/numpy/issues/2806

ブランチのフォークに提案された修正があります。誰かがそれを確認するのに役立ち ます。https ://github.com/sauliusl/numpy/tree/bug_large_save を参照

于 2013-01-06T15:54:17.503 に答える
2

Mac OSX の fread() ルーチンのバグである可能性があります。fwrite() ルーチンにも同様のバグがあります: https://github.com/numpy/numpy/issues/574

簡単な C テスト プログラム (チケットに添付されているものなど) を作成して、Apple に文句を言うことでこれを確認できます...

回避策は、ファイルを十分に小さいチャンクで読み取ることです。

編集:バグレポートを読むのが速すぎる --- fwrite() のバグはまったく似ていませんが、OS のバグを除外することはできないと思います...

于 2012-12-08T15:19:41.550 に答える