Numpy中国語ユーザーガイド1.インストール

2906 ワード

ドラゴン
1.1 NumPyとは何ですか.
原文:What is NumPy?
NumPyはPythonで科学計算に用いられる基礎パッケージである.これはPythonライブラリで、多次元配列オブジェクト、マスク配列やマトリクスなどの派生オブジェクト、数学、論理、グラフィック操作、ソート、選択、I/O、離散フーリエ変換、基本線形代数、基本統計操作、ランダムシミュレーションなど、配列の高速操作の様々なルーチンを提供しています.
NumPyパッケージのコアはndarrayオブジェクトです.コンパイルされたコードで実行されるいくつかの操作を伴う均一なデータ型のn次元配列がカプセル化されています.NumPy配列とPython標準リストにはいくつかの重要な違いがあります.
  • NumPy配列は、Pythonリスト(動的成長可能)とは異なり、作成時に固定されたサイズを有する.ndarrayのサイズを変更すると、新しい配列が作成され、元の配列が削除されます.
  • NumPy配列の要素は、同じメモリサイズを持つように、同じデータ型でなければなりません.ただし、例外として、(NumPyを含むPython)オブジェクト配列の要素サイズが異なります.
  • NumPy配列は、大量のデータ上の高度な数学演算および他のタイプの操作を容易にする.通常、このような操作はPythonを使用する内蔵リストよりも効率が高く、実行するコードが少ない可能性があります.
  • Pythonベースの科学と数学パッケージがNumPy配列を使用するようになった.通常、Pythonリストは入力としてサポートされますが、処理前にこれらの入力をNumPy配列に変換し、常にNumPy配列を出力します.言い換えれば、現在のPythonベースの科学/数学ソフトウェアを効率的に使用するには、Pythonの内蔵リストタイプをどのように使用するかを知るだけでは十分ではありません.NumPy配列の使用方法を知る必要があります.

  • シーケンスの大きさと速度は科学計算において特に重要である.たとえば、同じ長さの2つのリストの各要素を乗算する場合を考慮します.2つのPythonリストaおよびbにデータが格納されている場合、各要素をこのように巡回することができます.
    c = []
    for i in range(len(a)):
        c.append(a[i]*b[i])
    

    これは正しい答えを生み出したが、aとbが数百万の数字を含んでいる場合、Pythonの低効率サイクルに代価を払うことになる.このようにC言語でコードを記述して、同じタスクを完了することができます(変数宣言や初期化、メモリ割り当てなどは無視します).
    for (i = 0; i < rows; i++): {
      c[i] = a[i]*b[i];
    }
    

    これにより、Pythonコードの解釈とPythonオブジェクトの操作に関するすべてのオーバーヘッドが節約されますが、Python符号化を使用する利点はありません.さらに、符号化に必要なワークロードは、データ次元数の増加に伴って増加する.たとえば、2 D配列の場合、Cコード(上のように略記)は次のように拡張されます.
    for (i = 0; i < rows; i++): {
      for (j = 0; j < columns; j++): {
        c[i][j] = a[i][j]*b[i][j];
      }
    }
    

    NumPyは、要素レベルの操作がndarrayの「デフォルトモード」であり、プリコンパイルされたCコードを実行することで加速するという2つの利点を統合しています.NumPyで:
    c = a * b
    

    の行為は前の例のようにC言語の速度に近いが、コードは私たちが望んでいるように、標準的なPythonのように簡潔である.実際、NumPyのスタイルはもっと簡潔!最後に、この例は、NumPyの2つの特性を説明する:向量子化(Vectorization)とブロードキャスト(Broadcasting)であり、これらはNumPyの強みの基礎である.
    量子化は、欠落した明示的なループ、インデックス、およびその他を記述するために使用され、コードのこれらのことは、もちろん、「バックグラウンド」(プリコンパイルされたCコード)で最適化される.量子化符号化の利点は、次のようなものが多い.
  • 量子化コードより簡潔で読みやすい
  • コードがより少ないことは、一般に、より少ないエラー
  • を意味する.
  • コードは、標準的な数学記号(通常、数学構造の記述が容易)
  • に似ている.
  • 量子化の結果はさらに「Pythonic」である.量子化されていないと、私たちのコードはより効率的ではなく、ループも読みにくいです.

  • ブロードキャストは、暗黙的な要素レベルの動作を記述する用語である.一般的に、NumPyのすべての操作は、算術演算だけでなく、論理演算、ビット演算、関数演算など、このような暗黙的な要素レベルで実行され、ブロードキャストである.さらに、上記の例では、aおよびbは同じ形状の多次元配列であってもよいし、スカラーおよび配列であってもよい.さらに、異なる形状の2つの配列であってもよく、小さい配列が明確なブロードキャストを生成するように、大きな配列のサイズに拡張できると仮定する.詳細なルールはnumpy.を参照してください.doc.broadcasting.
    NumPyは、ndarrayのオブジェクト向けを完全にサポートします.たとえば、ndarrayはクラスであり、多くのメソッドと属性を持っています.その多くの方法はNumPyの最外層ネーミング空間の関数をコピーし、プログラマーにコードがどのパターンに書かれているか、どのパターンが現在のタスクに適しているかを完全に自由に決定させる.
    1.2 NumPyの取り付け
    原文:Installing NumPy
    ほとんどの場合、システムにNumPyをインストールする最善の方法は、オペレーティングシステムのために事前にコンパイルされたパッケージを使用することです.
    オプションの接続については、http://scipy.org/install.html .
    ソース・パッケージの構築については、ソース・コードから構築するを参照してください.これらの情報は主に高度なユーザーに使用されます.