3

多くの関数では、ネイティブ Python または numpy のいずれかを使用して続行できます。

import mathこれは、Python nativeだけでなく numpy メソッドでも使用できる数学関数の場合です。これは、numpy の narray と pythons のリスト内包表記、またはタプルを使用した配列の場合にも当てはまります。

Python と numpy にあるこれらの機能に関して 2 つの質問があります

  1. 一般に、メソッドがネイティブ Python と numpy で利用できる場合、両方のソリューションのどちらを好みますか? 効率の面では?それは異なりますか、そして Python と numpy はその進行においてどのように異なるでしょうか?

  2. より具体的には、配列、および並べ替え、連結などの配列を扱う基本的な関数に関して、どのソリューションがより効率的ですか? 最も効率的なソリューションの効率性を決定するものは何ですか?

これは非常にオープンで一般的な質問です。それは私のコードに大きな影響を与えないと思いますが、ただ疑問に思っています。

4

3 に答える 3

4

一般に、2 つの間の変換を回避することが (効率的に) 最も重要です。ほとんどの場合、データに対して非 numpy 関数を使用している場合、それらは標準の Python データ型を使用して内部的に動作するため、numpy 配列を使用すると、前後に変換する必要があるため非効率的になります。

同様に、多くの numpy 関数を使用してデータを操作している場合、その間にすべてを基本的な Python 型に変換することも非効率的です。


関数の選択に関する限り、データが既に存在する形式で動作するように設計されたものを使用してください。たとえば、numpy 配列が既にある場合は、numpy 関数を使用します。同様に、基本的な Python データ型がある場合は、Python 関数を使用します。numpy の関数は、numpy のデータ型を操作するために最適化される予定です。

于 2013-01-27T08:16:32.603 に答える
1
  1. NumPy 配列と数値リストのどちらを使用するかを選択できる場合、通常は前者の方が高速です。

  2. 2番目の質問はよくわからないので、対処しようとしません。

于 2013-01-27T08:19:08.033 に答える
1

コードのスミペットをベンチマークし、結果を決定できます。Python モジュール timeit を使用します: http://docs.python.org/2/library/timeit.html

于 2013-01-27T08:27:38.850 に答える