【NumPy入門 np.arange】等差数列(1,3,5,7..)を生成するarange関数

等差数列(一定間隔で並べられた数字)を作るPythonの関数に、rangeがあります。

【Python入門】range関数を使ってリストを作ろう!
更新日 : 2019年5月9日

これに対応するNumPyの関数、np.arange関数を紹介します。

NumPyの関数はPythonの関数に比べて、一般的に高速であることが知られています。Pythonの関数にもNumPyで対応する関数が用意されているものが多いので、しっかり覚えてNumPyのポテンシャルを活かせるコードを書いていきましょう!

np.arangeの引数と返り値

※参考:SciPy.org

numpy.arange([start]stop[step]dtype=None)

指定された区間内(start ~ stop)で等間隔の値をもった配列を返します。startからstopまでで等間隔の値をもつ配列を作りますが、stepを指定することで間隔を指定することができます。

この関数はPythonのrange関数とほぼ同じ関数ですが、返り値がlistではなくnp.arrayであることに注意です! 要素に小数(0.1など)を使いたい場合は、np.linspaceの方が適しています。

Parameters:
start : 数字, optional

等差数列の開始の値です。デフォルトは0。

stop : 数字

等差数列の終わりの値です。stepの値によってはこの値で終わらない場合もあります。

step : 数字, optional
値の間隔を指定するパラメータです。デフォルトは1。
dtype : dtype

配列の要素の型です。dtypeが与えられていない場合は、他のパラメータから適当な値が使われます。

Returns:
arange : ndarray

等差数列が入った配列を返します。

使い方

以下のコードはjupyterで実行する事をおすすめします。

import numpy as np
まずはライブラリをimport。

基本的な使い方

基本的な使い方はrange関数と同じです。

In [2]:
x = np.arange(10)
In [3]:
def array_info(x):
    print("配列のshape", x.shape)
    print("配列の要素のデータ型", x.dtype)
    print("配列の中身\n",x)
In [4]:
array_info(x)
Out:
配列のshape (10,)
配列の要素のデータ型 int64
配列の中身
 [0 1 2 3 4 5 6 7 8 9]

startとstopを指定することで、任意の範囲の等差数列が作れます。

In [5]:
x2 = np.arange(0,10)
array_info(x2)
Out:
配列のshape (10,)
配列の要素のデータ型 int64
配列の中身
 [0 1 2 3 4 5 6 7 8 9]
In [6]:
x3 = np.arange(5,11)
array_info(x3)
Out:
配列のshape (6,)
配列の要素のデータ型 int64
配列の中身
 [ 5  6  7  8  9 10]

step幅を指定する

step幅を指定することもできます。

引数の順番に注意してください。

In [7]:
x4 = np.arange(5,15,3)
array_info(x4)
Out:
配列のshape (4,)
配列の要素のデータ型 int64
配列の中身
 [ 5  8 11 14]

降順の等差数列

今までは昇順の等差数列ばかり作ってきましたが、もちろん降順も作れます。

ただし、step幅を指定してあげないと空の配列になってしまいます。注意してください。

In [8]:
x4 = np.arange(10, 0)
array_info(x4)
Out:
配列のshape (0,)
配列の要素のデータ型 int64
配列の中身
 []

降順の等差数列を作るstepパラメータはマイナスの値を使います。

In [9]:
x5 = np.arange(10, 0, -1)
array_info(x5)
Out:
配列のshape (10,)
配列の要素のデータ型 int64
配列の中身
 [10  9  8  7  6  5  4  3  2  1]

小数を使った等差数列

もちろん、要素が浮動小数点数になる場合にも対応しています。ですがこれをする場合、np.linspaceというもっと適した関数があるので、そっちを使ったほうが良いと思います。

【NumPy入門 np.linspace】等差数列を作成する関数
更新日 : 2019年8月30日
In [10]:
x5 = np.arange(10, 0, -0.1)
array_info(x5)
Out:
配列のshape (100,)
配列の要素のデータ型 float64
配列の中身
 [10.   9.9  9.8  9.7  9.6  9.5  9.4  9.3  9.2  9.1  9.   8.9  8.8  8.7
  8.6  8.5  8.4  8.3  8.2  8.1  8.   7.9  7.8  7.7  7.6  7.5  7.4  7.3
  7.2  7.1  7.   6.9  6.8  6.7  6.6  6.5  6.4  6.3  6.2  6.1  6.   5.9
  5.8  5.7  5.6  5.5  5.4  5.3  5.2  5.1  5.   4.9  4.8  4.7  4.6  4.5
  4.4  4.3  4.2  4.1  4.   3.9  3.8  3.7  3.6  3.5  3.4  3.3  3.2  3.1
  3.   2.9  2.8  2.7  2.6  2.5  2.4  2.3  2.2  2.1  2.   1.9  1.8  1.7
  1.6  1.5  1.4  1.3  1.2  1.1  1.   0.9  0.8  0.7  0.6  0.5  0.4  0.3
  0.2  0.1]

dtypeの指定

dtypeを明示的に書くことで、出力される配列の型を指定することができます。

In [11]:
x5 = np.arange(10, 0, -0.7, dtype=np.float16)
array_info(x5)
Out:
配列のshape (15,)
配列の要素のデータ型 float16
配列の中身
 [10.      9.3     8.59    7.89    7.188   6.484   5.78    5.08    4.375
  3.672   2.969   2.266   1.5625  0.8594  0.1562]

まとめ

この記事では、NumPyで等差数列を出力する関数、np.arangeを紹介しました。

基本的にはrange関数と同じ動作をするので、覚えるのは簡単ですね! この関数を使いこなして、科学計算・機械学習モデルの実装などに役立ててくださいね。

今回の記事は下記の記事を参考にしています。

参考記事:DeepAge 「連番や等差数列を生成するnumpy.arange関数の使い方」
https://deepage.net/features/numpy-arange.html

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説