【Python NumPy linspace】ベクトル・行列の生成・初期化方法(6):1次元配列(ベクトル)・数列の生成方法(linspace, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

numpy

NumPy は、Python モジュールの1つで、

高速計算やデータ加工などで必須のライブラリです。

NumPyの文法を理解すると、

サクッと実装でき、プログラミングが加速します。

NumPyは、高次元データを扱うことが多く、

各次元ごとに処理を行う

といったこともよくあります。

各次元は、それぞれ1次元ですので、

1次元の繰り返し処理などを使ったりします。

そこで、整数列を生成する方法(初期化)をしておくと役立ちます。

 

そこで本シリーズでは、NumPyの配列生成や初期化について、まとめています。

 

第5話では、数列の生成・初期化について、

  • NumPy の np.arange
  • Python の range関数

を比較しながら、使い方をまとめました↓

【Python NumPy arange】ベクトル・行列の生成・初期化方法(5):1次元配列(ベクトル)・数列の生成方法(range, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

また、第1弾から第4弾までは、行列の初期化を扱いました

【Python NumPy】ベクトル・行列の生成・初期化方法(1):ゼロ行列 zeros、zeros_likeについて、サンプルコードとともに、サクッと、わかりやすく、まとめました【Python 入門】

 

【Python NumPy】ベクトル・行列の生成・初期化方法(2):すべて要素1の行列 ones、ones_likeについて、サンプルコードともに、サクッと、わかりやすく、まとめました【Python 入門】

 

【Python NumPy】ベクトル・行列の生成・初期化方法(3):単位行列の生成( identity、eye)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

【Python NumPy 独学】ベクトル・行列の生成・初期化方法(4):高速な配列の生成方法(empty)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

これら4つを理解しておけば、NumPyの配列の生成・初期化の基礎はオッケーです。

 

本記事では、NumPy での1次元配列の生成・初期化について、

  • np.linspace

の使い方と、似たような使い方ができる

  • np.arange

との違いについて

サクッと、わかりやすく、まとめたいと思います。

【Python NumPy linspace】ベクトル・行列の生成・初期化方法(6):1次元配列(ベクトル)・数列の生成方法(linspace, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

数列・整数列を生成・初期化するには、

いくつかの方法があります。

NumPy では、主に2つの方法があります。

  • np.arange

については、前回の記事でまとめました。

【Python NumPy arange】ベクトル・行列の生成・初期化方法(5):1次元配列(ベクトル)・数列の生成方法(range, arrange)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】

 

本記事では、もう1つの方法

  • np.linspace

についてまとめ、

  • np.linspace
  • np.arange

の使い分けについても、わかりやすく、サクッとまとめたいと思います。

 

「NumPy」での数列の生成・初期化:(np.linspace)

np.linspace は3つの数字を指定する

np.linspace( ) の中に、3つの数字が指定されています。

np.linspace(  ) では、

  • 左の数字から、
  • 真ん中の数字までを、
  • 右の数字で等分

した数列を生成します。

上の例 np.linspace(0, 5, 6)は、

  • 0から5までを6等分した数列

を返します。

6等分するので、6個の要素を持った配列になります。

 

 

np.linspace はデフォルトで50等分

この例では、

np.linspace(0, 5)と2つの数字が指定されています。

この場合、

数列の最初と最後が指定されてますが、

何等分するかは指定されていません。

なので、デフォルトの50等分が採用されて、

Out[33]のようになっています。

50等分するので、50個の配列が返されます。

 

 

数列の間隔は retstep で指定する

何等分かすると、数列同士の間隔の値が複雑になることがかります。

それを表示して確認したりすることができます。

In[35]のように、np.linspace( )の中に、数字を3つ指定して、

そのあとに「retstep=True」と指定します。

Out[35]のように、最後に、1.0と間隔が表示されています。

デフォルトでは表示されません。

 

 

np.linspace はデータ型を指定できる

デフォルトでは、浮動小数点型で生成されます。

例えば、dtype =’int’

などと指定すると、整数型のデータが生成されます。

 

 

 

np.linspace と np.arange の違いとは

np.linspace も np.arange も、基本的には、

3つの数字を指定して使います。

ただし、それらの数字の意味が違っています。

np.linspace の場合は、

  • 左の数字 = 生成する数列の最初の数字
  • 真ん中の数字 = 生成する数列の最後の数字
  • 右の数字 = 最初の数字と最後の数字を何等分するか

np.arange  の場合は

  • 左の数字 = 生成する数列の最初の数字
  • 真ん中の数字 = 生成する数列の最後の数字+1
  • 右の数字 = 何個おきに生成するか

 

np.linspace とnp.arange の違いは、

真ん中の数字と右の数字になります。

 

最初の数字は、どちらも生成する配列の最初の数字です。

 

真ん中の数字は、生成する配列の最後に関係します。

生成する配列の最後の数字は、

  • np.linspace では「真ん中の数字」
  • np.arange では「真ん中の数字−1」

になります。

 

右の数字は、

  • np.linspace では、「何等分にするか」
  • np.arange では、「何個おきに生成するか」

を表しています。

 

 

 

というわけで、本記事では、

NumPy での1次元配列の生成・初期化について、

  • np.linspace

の使い方と、似たような使い方ができる

  • np.arange

との違いについて

サクッと、わかりやすく、まとめました。

 

 

 

こちらもございます↓