PythonのNumPyのarangeメソッドの使い方を解説する

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Python の Numpy の arange() メソッドについて説明します。

NumPyはPythonの非常に人気のあるモジュールで、主にその高速なパフォーマンスとコードの信頼性のためにユーザーに使用されています。

Pythonでのプログラミングにベクトル化されたアプローチを提供し、さらにはコードをより簡潔で読みやすくしてくれます。


Numpyのarange()メソッドの基本

Python の NumPy モジュールにある arange() メソッドは、基本的に、あらかじめ設定された始点と終点、および一定のステップサイズに基づいて、数値の線形列を生成するために使用されます。

構文は以下の通りです。

import numpy as np
np.arange( start , stop , step ,dtype=nome)

ここで

  • start` は、これから生成される数列の開始点です。シーケンスはこの番号から始まる。
  • stop` は、シーケンスが生成されるまでの制限値です。注意:stop はシーケンス自体には含まれず,その前の数値のみが考慮されます.
  • ステップの大きさは一様である.デフォルトでは、step として何も渡されない場合、インタープリタは step を 1(1) と見なします。ステップサイズは 0 ではない値でなければならず、そうでなければ ZeroDivisionError が発生することを覚えておいてください。
  • dtype` は結果の ndarray 要素の型です。デフォルトでは、メソッド内で指定されたパラメータから型を推定します。dtype は none、int、float などです。

Numpyのarange()の例

Numpyのメソッド arange() の動作を例題を使って理解しましょう。

import numpy as np
 
#passing start=1, stop=10, and step=2 and dtype=int
res=np.arange(1,10,2,int)
 
#printing the result
print("The resultant sequence is : ",res)
#analysing the type of the result
print("Type of returned result is:",type(res))

結果は、以下の通りになります。

import numpy as np
 
#passing only one parameter to the arange() method
res=np.arange(5)
 
#printing the result
print("The resultant sequence with one argument : ",res)
#analysing the type of the result
print("Type of returned result is:",type(res))

ここで

  • NumPy モジュールを np としてインポートしています。
  • 次に、start, stop, step, dtype にそれぞれ 1, 10, 2, int を渡して arange() メソッドを使用し、1 から 9 までの整数からなる配列を step=2 で生成しています。
  • この結果得られた配列と、返されたオブジェクトの type() を表示すると、 ndarray クラスのメンバであることが判明します。

PythonでNumpyのarange()を使う

arange()メソッドは前のセクションで見たように、start、stop、step、dtypeの4つの引数を取ります。

では、このメソッドを様々な方法で使用し、すべてのケースでどのように動作するかを見ていきます。


1. 引数が1つの場合のarange()の使用

Numpyのarange()メソッドに引数を1つだけ渡した場合、デフォルトではその値をstop引数と見なします。

以下のコード例を見てください。

The resultant sequence with one argument :  [0 1 2 3 4]
Type of returned result is: <class 'numpy.ndarray'>

を出力します。

import numpy as np
 
#passing start=5 and stop=8 to arange()
res=np.arange(5,8)
 
#printing the result
print("The resultant sequence with no step :",res)
#analysing the type of the result
print("Type of returned result is:",type(res))

ここで

  • numpy` モジュールを np としてインポートしています。
  • その後、パラメータは’5’のみで、シーケンスを生成して res に格納することを試みます。
  • このとき、プログラムは渡された値を停止点または終点と見なします。そして、値 [0 1 2 3 4] を持つ配列を作成します。
  • 再度、結果のtype()がndarrayであることを確認します。

2. Numpyのarange()をstepなしで使う場合

Pythonのarange()`メソッドにstepパラメータが渡されない場合、デフォルトでは値1が指定されたものとみなされます。

例を見てみましょう。

The resultant sequence with no step : [5 6 7]
Type of returned result is: <class 'numpy.ndarray'>

出力してみましょう。

import numpy as np
 
#passing start=-10, stop=-1 and step=3 to arange()
res=np.arange(-10,-1,3)
 
#printing the result
print("The resultant sequence with negative start and stop :",res)
#analysing the type of the result
print("Type of returned result is:",type(res))

ここで、stepパラメータを渡していないにもかかわらず、作成された配列は[5 6 7]の値で構成されていることがよくわかります。

つまり、この場合、デフォルトの値である1を使って、対応する出力を生成している。


3. 負のパラメータを持つarange()の使用

では、arange()メソッドに渡された値が負の値だった場合はどうでしょうか?普通に動作します。

始点と終点が負の値である場合、このメソッドは正の値の場合と同じ方法でシーケンスを生成します。

これは、開始点から始まり、指定された正のステップで増分して処理を継続します。

注意:もし指定されたステップが負の値であった場合、唯一の違いはインクリメントの部分となる。

この場合、ステップが追加されますが、ステップの値が負であるため、最終的に生成される配列は降順になる予定です。

負のスタートとストップの値を渡す例を見てみましょう。

The resultant sequence with negative start and stop : [-10  -7  -4]
Type of returned result is: <class 'numpy.ndarray'>

結果を出力すると、以下の様になります。

import numpy as np
#to print all even numbers from 2 to nth even number, where n is user input
 
#user input
n=int(input("Enter the last even number: "))
print("The sequence of even numbers :")
 
for i in np.arange(2,n+2,2):     #here stop=n+2 so that the nth even number is too printed
    print(i, end=" ")

上述したように、arange()` メソッドは要素 [-10 -7 -4] からなる配列を生成します。

これは、与えられた start と stop パラメータが (-10) と (-1) で、step= 3 であるからです。


4. Numpyのarange()とPythonのループの併用

以下の例では、Pythonのネイティブなforループにarange()メソッドを組み込んでいます。

Np Arange Example
Np Arange Example

結果は以下の通りです。

Prin Sequence Of Even Numbers
Print Sequence Of Even Numbers

上記のコードでは

  • arange()メソッドは、組み込みのrange()` メソッドと同じ出力を生成します。ここでは、2からユーザが指定した最後の1つまでのすべての偶数を表示しようとします。
  • np.arange(2,n+2,2) は 2 から n までのすべての数字を含むシーケンスを出力します。
  • 先に見たように、arange()メソッドは停止値や終了値を含んでいません。そこで、この状況を打開し、ユーザが提供した最後の偶数個の値も表示するために、停止パラメータを (n+2) と考え、step=2 としています。

Pythonのネイティブなforループで arange() メソッドを使用したにもかかわらず、これはコードの実行速度と性能に影響を及ぼします。

同様に遅くなります。


Numpyのarange()とPythonのrange()の比較

NumPyモジュールは、本当に役に立つ、そしてより重要なことに、より高速なメソッドを提供してくれます。

線形配列の生成の場合、Numpyの arange() メソッドは、どちらも同じタスクを実行するにもかかわらず、性能と速度の点で組み込みの range() メソッドを凌駕します。

これは、numpyモジュールがベクトル化されたコードを使用しているためです。


まとめ

NumPyモジュールの arange() メソッドについて、その仕組みと、Pythonのネイティブメソッド range() よりも高速で優れたメソッドであることを学びました。


タイトルとURLをコピーしました