私が実際に持っている問題は、(float, str)
タプルの長いソートされたリストをRAMに保存したいということです。普通のリストは私の4Gb RAMには収まらないので、私は2つのnumpy.ndarray
を使うことができると思った。タプルの1つの反復可能列から2つ(またはそれ以上)のnumpy配列をどのように埋めるのですか?
データのソースは2タプルの繰り返し可能です。 numpy
にはfromiter
の機能がありますが、どうすれば使用できますか?イテラブル内のアイテムの数は不明です。私は最初にメモリの制限のためにそれをリストに消費することはできません。私はitertools.tee
のことを考えましたが、ここでは多くのメモリオーバーヘッドが追加されているようです。
私ができると思うことは、イテレータをチャンクで消費して、それらを配列に追加することです。それから私の質問は、それを効率的に行う方法です。 2D配列を2つ作成して行を追加する必要がありますか? (その後、私はそれらを1Dに変換する必要があります)。
もっと良いアプローチがありますか?私が本当に必要とするのは、対応する数値を対数時間で検索することです(そのため、浮動小数点値でソートして、できるだけコンパクトにしたいのです)。
P.S. iterableはソートされません。
'np.fromiter'を使用して、2つの列で1つの配列を作成すれば十分ですか? – unutbu
@unutbu ...なぜ私はそれを考慮していないのか分かりません:)いいアイデアのように思えます。それから、私は長軸に沿ってそれを並べ替えて、そのまま保持します。あなたはそれを答えとして投稿することができます。 –