問題タブ [numpy-memmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
558 参照

python - Python with-context manager 内で np.memmap() バイナリ ファイルを開きます

大きなスクリプトの 1 つからファイルを開くことができないという非常に奇妙な問題があります。

この問題は断続的に発生し、エラーを理解できないようです。このエラーが発生しています:

私のスクリプトのこのコマンドから:

私が使用するとき:

として評価されTrueます。また、openコマンドを単独で実行すると、次ipythonのファイルが正常に開きます。

私は言葉を失っており、errno 22エラーは誤解を招くと思います。前述したように、この問題は断続的に発生し、一部のファイルで機能します。誰かが私が間違っていることを知っていますか?

私は Windows 8 マシン 64 ビットで作業しており、Anaconda 2.1.0 (64 ビット) ディストリビューションから Python バージョン 2.7.8 を実行しています。

0 投票する
1 に答える
671 参照

python - das 配列で float32 を使用するとメモリ エラーが発生する

を使用して 1.25 GB のデータセットを Python にインポートしようとしていますdask.array

ファイルは 1312*2500*196uint16の配列です。float32後で処理するために、これを配列に変換する必要があります。

この Dask 配列を でつなぎ合わせることができましたがuint16、 に変換しようとするとfloat32メモリ エラーが発生します。

チャンクサイズに何をしても問題ありません。常にメモリエラーが発生します。

配列を 100 行で連結して配列を作成します (2500 次元を 100 行の小さな断片に分割します。これは、ファイルを読み取ってから配列を作成するために使用する必要がある画像ファイルをdaskネイティブに読み取ることができないためです。以下では、 「できるだけ短い」コード スニペットを提供します。.RAWnumpy.memmap()

私は2つの方法を試しました:

1)完全なuint16配列を作成してから、次のように変換してみてくださいfloat32

(注:memmapは 1312x100x196 の配列で、行の範囲は 0 から 24 です)

そして、私は使用します

方法 2:

どちらの方法でもメモリ エラーが発生します。

これには何か理由がありますか?

dask配列は最大 100 GB のデータセット計算を実行できると読みました。

すべてのチャンク サイズを試しました (10x10x10 から 1 行まで)

0 投票する
1 に答える
105 参照

python - Oja ルールで memmap を使用して RAM をクラッシュさせる

サイズ 400x156300 のデータセットで oja のルールを使用しています。RAMがクラッシュするようです。何が原因なのかわかりません。助けてください。私は12GBのRAMを持っています。memmap を使用しようとしましたが、それでもクラッシュします!!

また、提起された問題: https://github.com/itdxer/neupy/issues/27。パッケージ開発が活発かどうかわかりません。

RAM のクラッシュとは、RAM の使用率が 100% を超え、コンピューターが応答しなくなることを意味します。

0 投票する
2 に答える
885 参照

python - ブール配列のパッキングは int を通過する必要があります (numpy 1.8.2)

ブール値を格納するよりコンパクトな方法を探しています。numpy は、1 つのブール値を格納するために内部的に 8 ビットを必要としますが、np.packbitsそれらをパックできるようにします。これはかなりクールです。

問題は、ブール値の32e6 バイト配列を 4e6 バイト配列にパックするには、最初に256e6 バイトを費やしてブール配列を int 配列に変換する必要があることです。

それについて numpy トラッカーで開かれた 1 年前の問題があります ( 参照 https://github.com/numpy/numpy/issues/5377 ) 。

誰かが解決策/より良い回避策を持っていますか?

正しい方法で実行しようとしたときのトレースバック:

PS: bitarray を試してみますが、純粋な numpy で取得する必要があります。

0 投票する
0 に答える
794 参照

python-2.7 - numpy memmap'd ファイルを単一の memmap に連結する

非常に多数 (>1000) のファイルがあり、それぞれ約 20 MB です。これらのファイルは、単純なバイナリ形式で保存された連続時系列データを表し、それらをすべて直接連結すると完全な時系列が復元されます。

memmap を使用して各ファイルをアドレス指定し、それらすべてをその場で 1 つの大きな memmap に連結することにより、これを仮想的に Python で実行したいと考えています。

SO を検索すると、np.concatenate がそれらをメモリにロードすることが示唆されますが、これはできません。ここでの質問は部分的に答えているようですが、そこの答えは、連結前にファイルの大きさを知っていることを前提としていますが、これは必ずしも真実ではありません。

では、メモリマップの大きさを事前に知らずにメモリマップを連結する一般的な方法はありますか?

編集:リンクされた質問が実際にディスク上に連結ファイルを作成することが指摘されました。これは私が望むものではありません。

0 投票する
1 に答える
260 参照

python - numpy の平均値が memmap の最大値より大きい

タイムスタンプの配列があり、行列 X の 2 列目の行ごとに増加します。タイムスタンプの平均値を計算すると、最大値よりも大きくなります。ストレージに numpy memmap を使用しています。なぜこうなった?

編集: ここに memmap ファイルをアップロードしました。http://www.filedropper.com/x_2これが私がロードする方法です。

0 投票する
0 に答える
1041 参照

python - numpy.memmap'd ファイルを並行して更新する場合、ファイル全体ではなくスライスのみを「フラッシュ」する方法はありますか?

私は多くの厄介な i/o を実行する必要があり、numpy でメモリマップされたファイルを使用することを選択しました...多くの頭痛の種の後、プロセスがディスクに「フラッシュ」すると、他のプロセスが試みているものを上書きすることが多いことに気付きました古いデータで書き込む... mmap パッケージを使用すると、チャンクだけをディスクに書き込むことができることを知っています。私は mmap を使用しますが、私のデータはゼロと非常に小さな数字の混合で構成されているため、文字列として作成されるバイト数と、どのプロセッサがどのチャンクを「所有」しているかを把握するのは困難です。

次のようなことをする方法はありますか?

古いゼロを新しいデータにフラッシュバックすることなく、各プロセッサが同時に mmap を更新できるようにするには?