連続した数字も思いのまま!numpyのarangeとlinspaceをマスターしよう

こんにちは。ゆうせいです。

前回は、中身が 01 の配列を作る方法を学びましたね。でも、プログラミングをしていると「 1 から 100 まで 1 ずつ増える数字が欲しい」とか「 0 から 1 の間をきれいに 10 等分したい」といった場面がよく出てきます。

そんなときに役立つのが、今回ご紹介する arange(エーレンジ)と linspace(リンスペース)です。

皆さんは、階段を作るときに「一段の高さ」を気にするタイプですか。それとも「全部で何段にするか」を先に決めるタイプでしょうか。この二つの関数の違いは、まさにその視点の違いにあるのです!

刻み幅で指定する arange

まずは arange です。これはPython標準の range とよく似ていますが、numpyの配列を返してくれるので、そのまま高度な計算に使えるのが強みです。

arange の最大の特徴は、数字が「いくつずつ増えるか」という間隔を指定する点にあります。

例えば、 0 から始めて 2 ずつ増やし、 10 の手前まで数字が欲しいときは、次のように考えます。

開始 = 0

終了 = 10

間隔 = 2

この場合、手に入る数字は 0, 2, 4, 6, 8 となります。最後の 10 は含まれない、というルールに注意してくださいね。

arange のメリット

5 刻みでデータが欲しい」というように、増える幅がはっきり決まっている場合にとても便利です。また、実は小数の刻み幅も指定できるので、 0.1 ずつ増やすといった操作も得意です。

分割数で指定する linspace

次に紹介するのが linspace です。これは linear space(線形空間)の略で、初心者の方には少し聞き馴染みのない名前かもしれません。

しかし、使い方はとても直感的です。 arange が「間隔」を指定したのに対し、 linspace は「最終的に何個の数字が欲しいか」を指定します。

例えば、 0 から 10 までの間を、ぴったり 5 つに分けたいときは、次のように設定します。

開始 = 0

終了 = 10

個数 = 5

こうすると、 0, 2.5, 5.0, 7.5, 10.0 という数字が自動的に計算されます。

linspace の魅力

何より素晴らしいのは、終了の数字がぴったり含まれる点です!

グラフを描くときなど、「端から端までをきれいに 50 等分したい」といった場面では、計算の手間が省ける linspace が圧倒的に使いやすいですよ。

二つの使い分けを整理しよう

どちらを使えばいいか迷ったら、この考え方を思い出してください。

特徴arangelinspace
指定するもの増える幅(ステップ)最終的な要素の数
終了の数字含まない(未満)含む(以下)
例え20 センチ間隔で杭を打って!」「この範囲に 10 本の杭を均等に打って!」
よく使う場面ループ処理、規則的な整数の生成グラフ作成、シミュレーション

皆さんは、どちらの指示の方が使いやすそうだと感じますか。

実際にコードで比較してみよう

それでは、この二つの違いをコードで確かめてみましょう。

import numpy as np

0から10未満まで、2刻み

a = np.arange(0, 10, 2)

print(a)

0から10までを、5等分

b = np.linspace(0, 10, 5)

print(b)

実行結果を見ると、 arange は整数のリストのように見え、 linspace は小数のリストとして表示されたはずです。 linspace はデフォルトで小数を扱うようになっているのも特徴の一つですね。

今後のステップアップに向けて

今回の二つの武器を手に入れたことで、皆さんは自由自在に数値の列を生み出せるようになりました!

これからの学習では、ぜひ以下のことに挑戦してみてください。

  1. linspace を使って 0 から 2 \times \pi(パイ)までの数字を 100 個作り、サイン波のグラフを描く準備をしてみる。
  2. arange でマイナスの方向に数字を減らしていく方法を試してみる。
  3. 二つの関数で作った配列の shape(前回学びましたね!)が、自分の意図通りになっているか確認する。

数値の列が作れるようになると、データ分析やシミュレーションの世界が一気に広がります。

皆さんの「知りたい!」という気持ちに合わせて、またお伝えしていきますね。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。