1

numpy 配列を簡単に見ただけでは、通常の Python リストとどう違うのかわかりません。誰かが違いを説明できますか?リストではなくnumpy配列を使用する理由は?

4

2 に答える 2

5

NumPy 配列は、多次元数値データを操作するために特別に設計されており、任意のオブジェクトの配列が追加でサポートされています。これらは、便利な構文で高速なベクトル化操作を提供します。

>>> x = numpy.arange(4).reshape((2, 2))
>>> x
array([[0, 1],
       [2, 3]])
>>> x.T           # Transpose.
array([[0, 2],
       [1, 3]])
>>> x.max()
3
>>> x * 4
array([[ 0,  4],
       [ 8, 12]])
>>> x[:, 1]       # Slice to select the second column.
array([1, 3])
>>> x[:, 1] *= 2
>>> x
array([[0, 2],
       [2, 6]])
>>> timeit.timeit('x * 5',
...               setup='import numpy; x = numpy.arange(1000)',
...               number=100000)
0.4018515302670096
>>> timeit.timeit('[item*5 for item in x]',
...               setup='x = range(1000)',
...               number=100000)
8.542360042395984

それに比べて、リストは基本的に 1 次元データを対象としています。リストのリストを持つことはできますが、それは 2D リストではありません。リストのリストとして表される 2D データ セットの最大値を都合よく取得することはできません。これを呼び出すmaxと、リストが辞書順に比較され、リストが返されます。リストは同種のオブジェクトのシーケンスに適していますが、数学を行う場合は、numpy が必要で、ndarray が必要です。

于 2013-09-20T02:42:34.180 に答える
0

Numpy は拡張機能であり、その上のすべてのオブジェクトが作成時に定義された同じタイプであることが要求されます。また、一連の線形代数演算も提供します。Python が数値計算 (行列、n など) を処理するための数学的フレームワークに似ています。

于 2013-09-20T02:44:16.360 に答える