2017-06-22 18 views
1

私は多次元行列を扱っています(〜100次元程度、以下を参照)。私の行列はNumPy配列で、主にそれらを互いに乗算します。ベクトル化の限界は何ですか?

NumPyはどのような形で(スピードや精度に関して)気になっていますか?私。乗算を実行する前に線形配列に整形するのは理にかなっていますか?私はランダムな行列で独自のテストを行いました。無関係なようですが、これについて理論的な洞察をしたいと思います。

私は、Pythonがそれらを処理するのが遅くなる前に、どれくらいの大きさの行列ができるか、どれくらいの大きさになるかには限界があると思います。この制限を見つける方法はありますか?


私はいくつかの種(生物学)を持ち、これらの種のそれぞれに適応性を割り当てたいと考えています。そして、私はこれらの異なった精神が競争の結果にどのように影響するのかを見たいと思います。そして、私はすべての種のすべての可能なフィットネスの組み合わせを確認したいと思います。私の行列は多くの次元を持ちますが、すべての次元は非常に小さいです。

+0

どのような乗算を意味していますか? –

+0

通常の乗算​​「a * b」。 'a'と' b'の形が(同じであれば)どんな形になっていますか? –

+1

NumPyは、コンパイルされたCまたはC++コード(またはFortranの数値ライブラリ(?)を呼び出すことさえ)でこれらの操作を実行するので、遅くなる「Python」**ではないことに注意してください。 (ただし、計算はまだPythonのプロセスとスレッドで行われているので、もちろんそれはあなたがそれを "感じる"ところです) –

答えて

4

要素ごとの乗算の場合は、とは関係ありません。この配列を平坦化することで、物が変更されることはありません。注意:配列は次元に関係なく、RAMに直線的に保存されます。乗算の前に配列を平坦化すると、NumPyがデータを表示する方法を変更するだけで、RAMのデータには決して触れません。 1Dまたは100Dのデータを乗算することはまったく同じです。

関連する問題