NumPy は、Python モジュールの1つで、
データ分析や人工知能などで活用必須のライブラリです。
NumPyの文法を理解すると、
- サクッと実装できる
というメリットがあります。
その反面、教科書などサンプルコードを理解するときに、
- NumPyの文法を知らないと理解できない
といったデメリットがあります。
NumPyは、高次元データを扱うことが多く、
各次元ごとに処理を行う
といったこともよくあります。
各次元は、それぞれ1次元ですので、
1次元の繰り返し処理などを使ったりします。
そこで、整数列(例えば、繰り返し処理を制御するため使ったりします)を生成する方法(初期化)をしておくと役立ちます。
そこで本シリーズでは、NumPyの配列生成や初期化について、まとめています。
第1弾から第4弾までは、行列の初期化を扱いました
『【Python NumPy】ベクトル・行列の生成・初期化方法(3):単位行列の生成( identity、eye)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】』
『【Python NumPy 独学】ベクトル・行列の生成・初期化方法(4):高速な配列の生成方法(empty)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】』
これら4つを理解しておけば、NumPyの配列の生成・初期化の基礎はオッケーです。
しかし配列にはベクトル(1次元配列)もあり、行列よりりもよく使います。
例えば、整数列は、繰り返し制御などでよく使います。
そこで本記事では、NumPy での1次元配列の生成・初期化について、
Python での1次元配列の生成・初期化と比較しながら、
サクッと、わかりやすく、まとめたいと思います。
「Numpy」については、こちらの書籍でも解説しています(無料)↓
【Python NumPy arange】ベクトル・行列の生成・初期化方法(5):1次元配列(ベクトル)・数列の生成方法(range, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】
数列・整数列を生成・初期化するには、
いくつかの方法があります。
ここではNumPy についての記事ですが、
初学者の方は、Pythonでの数列・生数列の生成・初期化と混同されることがあります。
そこでまず、
- Python での数列の生成・初期化
をサクッとまとめた後で、
- NumPy での数列の生成・初期化
についてまとめたいと思います。
「Python」での数列の生成・初期化:(range)
Python では数列を生成・初期化するには、
- 「range ( ) 関数」
が使えます。
In[2] [3] のように、range(5) は、
0、1、2、3、4
0から5個の整数列を生成(ジェネレート)する関数です。
In[2] では、単に range(5) とすると、ジェネレータが返されています。
range(5) の中身(0, 1,2,3,4)は、
In[3] のように list 関数 で表示できます。
Out[3]のように、range(5)は、
リストとして [0, 1, 2, 3, 4] を返していることがわかります。
実際に、range(5)をジェネラータとして、for文の中で使ってみたのが In[4]です。
in の後ろに置くことで、
range(5) の中身(0, 1, 2, 3, 4)を1つずつ生成(ジェネレート)して、for の右の i に代入します。
これを中身がなくなるまで繰り返しているのがわかります。
このように、ジェネレータは、適切な場所で、繰り返し値を生成する機能があります。
ちなみに、Python のFor文については、こちらで解説をしています↓
In[5]では、range ( )の中に、1つの数字を入れています。
この場合、
- 0から、入れた数字の1つ前までの整数のリスト
を返します。
1つの数字は、整数列の最後を決めるわけです。
In[7]では、range ( )の中に、2つの数字を入れています。
この場合、
- 最初の数字(この場合3)から、後ろの数字(この場合10)の1つ前までの整数のリスト
を返します。
前の数字は整数列の最初を、後ろの数字は整数列の最後を決めます。
In[8][9][10]では、range ( )の中に、3つの数字を入れています。
この場合、
- 最初の数字(この場合3)から、後ろの数字(この場合10)の1つ前までの整数
- 3つ目の数字の間隔(この場合2、3、4)で飛び飛びに
を返します。
ちなみに、In[12] に示すよに、
range( ) 関数の中には、小数は指定できません。
- 整数のみを使う
ということを覚えておきましょう。
というわけで、Python range関数についてはこんな感じになります。
これから、NumPyでの整数列の生成・初期化について説明してきます。
「NumPy」での数列の生成・初期化:(np.arange)
NumPy では、np.arange が使えます。
Python の range関数 と似ていますので、
同じところと違うところを意識しておくのがポイントです。
NumPy では数列を生成・初期化するには、
- 「arange メソッド」
が使えます。
In[2] [3] のように、np.arange(5) は、
0、1、2、3、4
0から5個の整数列を生成(ジェネレート)するメソッドです。
In[2] では、単に np.arange(5) とすると、NumPy アレイが返されています。
np.arange(5) の中身[0, 1,2,3,4]は、
In[3] のように print 関数 で表示できます。
Out[3]のように、np.arange(5) は、
リストとして [0, 1, 2, 3, 4] を返していることがわかります。
for文の中で, np.arange(5) を使ってみたのが In[4]です。
in の後ろに置くことで、
np.arange(5) の中身(0, 1, 2, 3, 4)を1つずつ生成(ジェネレート)して、for の右の i に代入します。
これを中身がなくなるまで繰り返しているのがわかります。
range関数と同じように使えているのがわかります。
In[5]では、np.arange( )の中に、1つの数字を入れています。
この場合、
- 0から、入れた数字の1つ前までの整数のリスト
を返します。
1つの数字は、整数列の最後を決めるわけです。
In[7]では、np.arange( ) の中に、2つの数字を入れています。
この場合、
- 最初の数字(この場合3)から、後ろの数字(この場合10)の1つ前までの整数のリスト
を返します。
前の数字は整数列の最初を、後ろの数字は整数列の最後を決めます。
In[8][9][10]では、np.arange( )の中に、3つの数字を入れています。
この場合、
- 最初の数字(この場合3)から、後ろの数字(この場合10)の1つ前までの整数
- 3つ目の数字の間隔(この場合2、3、4)で飛び飛びに
を返します。
range関数と同じように使えているのがわかります。
ちなみに、In[13] に示すよに、
np.arange( ) の中には、
- 小数を指定できる
ということを覚えておきましょう。
この点は range関数と違っていますので気を付けましょう(range関数は整数だけ使えました)。
さらに、np.arange は、データ型を指定することができます。
In[14] では、整数列を生成しますが、
In[19] のように、
dtype = ‘float’
として、浮動小数点型の出力を生成できます。
同様に、In[20] では、浮動小数点列を生成しますが、
In[21] のように、
dtype = ‘int’
とすると、整数型の出力を生成できます。
というわけで、本記事では、
NumPy での1次元配列の生成・初期化について、
Python での1次元配列の生成・初期化と比較しながら、
サクッと、わかりやすく、まとめました。
NumPy での1次元配列の生成・初期化には、別の方法もあります。
- np.linspace
を使うやり方です。
そこで第6話は、
np.linspace の使い方と、似たような使い方ができる
- np.arange
との違いについて
サクッと、わかりやすく、まとめました↓
こちらもございます↓
「Numpy」については、こちらの書籍でも解説しています(無料)↓