メソッドでnp.fromfile
を使用するいくつかのレガシーコードを更新しようとしています。この方法でnumpyのソースを検索しようとすると、np.core.records.fromfileしか見つかりませんが、ドキュメントを検索するとnp.fromfileが見つかります。これらの2つの方法を見てみると、彼らはそれぞれ異なる方法であるように私に感じさせる異なるkwargsを持っていることがわかります。Numpy fromfileの2つの実装?
私の質問は以下のとおりです。
1)どこnp.fromfile
のソースが配置されていますか?
2)なぜ同じ名前の2つの異なる機能がありますか?あなたが違いを気にしていない場合、2人が違うふうに振る舞うので、これは明らかに混乱することがあります。特にnp.core.records.fromfile
は、ファイルが含まれているバイト数より多くのバイトを読み取ろうとするとエラーが発生し、np.fromfile
は含まれません。下に最小限の例があります。
In [1]: import numpy as np
In [2]: my_bytes = b'\x04\x00\x00\x00\xac\x92\x01\x00\xb2\x91\x01'
In [3]: with open('test_file.itf', 'wb') as f:
f.write(my_bytes)
In [4]: with open('test_file.itf', 'rb') as f:
result = np.fromfile(f, 'int32', 5)
In [5]: result
Out [5]:
In [6]: with open('test_file.itf', 'rb') as f:
result = np.core.records.fromfile(f, 'int32', 5)
ValueError: Not enough bytes left in file for specified shape and type
はい、レコード配列を扱うために特化した 'np.core.records.fromfile'のソースコードにリンクしています。 –
@ juanpa.arrivillaga私はそれを認識しています。残念ながら、これは私がソースで見つけることができるfromfileの実装された唯一の宣言です。私は 'np.fromfile'のソースがどこにあるのか知りたいです – Grr
' records'バージョンの本質は、正しいdtypeとシェイプの受信者配列を作成し、バイナリファイル 'readinto'メソッドを使ってバイトをロードすることですその '.data'属性に追加します。 – hpaulj