用語比較
np.arangeとnp.linspaceの違い|刻み幅で指定するか、点の数で指定するか(Python3データ分析)
np.arange は刻み幅(step)を決めて値を並べ、np.linspace は要素の数(num)を決めて値を並べます。刻みを決めたいなら arange、点の数を決めたいなら linspaceと分けます。
arange は終点を含まない半開区間 [start, stop) の値を返し、linspace は既定で終点 stop を含む num 個の等間隔の値を返します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
np.arangeとnp.linspaceの要点
np.arange
start、stop、step を指定する。区間は [start, stop) で、終点 stop は含まない。整数の引数なら、組み込みの range に近い働きで、ndarray を返す。
np.linspace
start、stop、要素の数 num(既定は50)を指定する。既定の endpoint=True では終点 stop を含む。dtype を指定しなければ、戻り値は整数にならず浮動小数点になる。
違いを表で確認
| 比較軸 | np.arange | np.linspace |
|---|---|---|
| 何を指定するか | 刻み幅 step(既定は1)。要素の数は結果として決まる | 要素の数 num(既定は50)。刻み幅は結果として決まる |
| 終点を含むか | 含まない。区間は半開区間 [start, stop) | 既定では含む。endpoint=False にすると含まない |
| 小数の刻みでの要素数 | 浮動小数点の丸め誤差のため、要素数を予測しにくい。長さは ceil((stop - start)/step) で、最後の要素が stop を超えることもある | num で要素数を直接決めるので、要素数がずれない |
| 公式の例 | np.arange(3, 7, 2) は array([3, 5])。np.arange(3.0) は array([0., 1., 2.]) | np.linspace(2.0, 3.0, num=5) は array([2., 2.25, 2.5, 2.75, 3.]) |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
整数の連番がほしい人
arange を使います。np.arange(3) は array([0, 1, 2]) で、終点の3は入りません。np.arange(3, 7) は array([3, 4, 5, 6]) です。
グラフの横軸に、区間を決まった数の点で区切りたい人
linspace を使います。公式の Quickstart では、np.linspace(0, 2 * pi, 100) を、多くの点で関数を評価するのに便利な書き方として挙げています。
0.1 や 0.3 のような小数の刻みで並べたい人
公式のリファレンスは、整数でない step では linspace のほうがよいことが多いと書いています。刻みで並べるなら arange を使えますが、要素数がずれる可能性を踏まえます。
具体例で使い分ける
例 1
arange で整数の連番を作る
公式の例の np.arange(3, 7, 2) を見ます。
- start が3、stop が7、step が2です。
- 区間は [3, 7) なので、7は入りません。
- 結果は array([3, 5]) で、次の値の7は stop に当たるため、入りません。
結論: arange は、終点を含まない半開区間で、刻み幅ごとに値を並べます。
例 2
linspace で終点を含むか選ぶ
公式の例の np.linspace(2.0, 3.0, num=5) を見ます。
- 既定の endpoint=True なので、終点の3.0が入り、array([2., 2.25, 2.5, 2.75, 3.]) になります。
- endpoint=False にすると、array([2., 2.2, 2.4, 2.6, 2.8]) で、3.0は入りません。
- 公式は、endpoint が False のときは刻み幅も変わると注意しています。
結論: linspace は、終点を含めるかを endpoint で選びます。既定は含めます。
例 3
小数の刻みで arange を使うとき
公式の Quickstart の、小数の刻みの例を見ます。
- Quickstart は、np.arange(0, 2, 0.3) が array([0., 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]) を返すと示しています。
- 同じ Quickstart は、浮動小数点の引数で arange を使うと、得られる要素数を予測するのが一般に難しいと書いています。
- そのため、刻みの代わりに要素の数を渡す linspace を使うのがよいとしています。例は np.linspace(0, 2, 9) で、0から2までの9個の数が並びます。
結論: 小数の刻みでは、要素数を直接決められる linspace が安全です。
問題文から答えを選ぶ手順
- 1
何を先に決めたいかを見る
刻み幅(1ずつ、2ずつ)を決めたいなら arange、点の数(5個、100個)を決めたいなら linspace です。
- 2
終点を含めたいかを見る
終点を含めたいなら、既定のままの linspace が向いています。arange は終点を含みません。
- 3
刻みが小数かを見る
刻みが 0.1 のような小数なら、公式の案内に沿って linspace を選びます。
試験での見分け方
- 1整数の刻みで連番を作るときは arange を使う。
- 2要素の数を決めて、区間を等分するときは linspace を使う。
- 3arange は終点を含まず、linspace は既定で終点を含む。
- 4小数の刻みでは、要素数を予測しにくい arange より、linspace を使う。
誤答しやすい選択肢
arange の終点が結果に入ると考える
修正: arange の区間は半開区間 [start, stop) で、stop は入りません。np.arange(3, 7) は array([3, 4, 5, 6]) です。
linspace の第3引数を刻み幅と考える
修正: linspace の num は要素の数です。刻み幅ではありません。np.linspace(2.0, 3.0, num=5) は5個の値を返します。
小数の刻みでも arange の要素数が必ず決まると考える
修正: 公式は、浮動小数点の引数では要素数を予測するのが一般に難しいと書いています。要素数が大事なときは linspace を使います。
確認問題
Q1np.arange(3, 7, 2) の結果は?
答え: array([3, 5])
区間は [3, 7) で、2ずつ増やします。終点の7は入りません。
Q2np.linspace(2.0, 3.0, num=5) の結果は?
答え: array([2., 2.25, 2.5, 2.75, 3.])
既定の endpoint=True なので、終点の3.0を含みます。
Q3np.linspace の num の既定値は?
答え: 50
num を省くと、50個の等間隔の値を返します。
Q4小数の刻みで要素数を確実に決めたいとき、arangeとlinspaceのどちらがよいか?
答え: linspace
linspace は要素の数を直接渡します。arange は浮動小数点の誤差で要素数を予測しにくいと、公式が説明しています。
到達チェック
- arange が刻み幅で、linspace が要素数で指定することを説明できる
- arange が終点を含まないことを言える
- linspace の endpoint の既定値と動きを答えられる
- 小数の刻みで linspace が勧められる理由を言える
関連ページで確認する
同じ資格で次に知りたいこと
- np.linalg.invとnp.linalg.solveの違い|逆行列を返すか、連立方程式の解を返すか(Python3データ分析)
NumPyのnp.linalg.inv(逆行列)とnp.linalg.solve(連立方程式の解)の違いを、渡す引数、戻り値、LinAlgErrorが出る条件で整理します。NumPy公式リファレンスの例で照合した、x0+2x1=1の計算例と確認問題つき。
- np.meanとnp.averageの違い|重みを付けられるのはどちらか(Python3データ分析)
NumPyのnp.mean(算術平均)とnp.average(加重平均)の違いを、weights引数、returned引数、重みの合計が0のときの動きで整理します。NumPy公式リファレンスの例で照合した、np.average(np.arange(1, 11), weights=np.arange(10, 0, -1))が4.0になる計算つきです。
- np.dotとnp.matmul(@)の違い|スカラーの扱いと3次元以上の配列の結果(Python3データ分析)
NumPyのnp.dotとnp.matmul(@演算子)の違いを、スカラーの扱い、3次元以上の配列の結果の形、2次元配列での推奨で整理します。NumPy公式リファレンスの例で照合した、結果の形が変わる例と確認問題つき。
よくある質問
Qnp.arangeとnp.linspaceの違いは?
arange は刻み幅 step を指定し、終点を含まない [start, stop) の値を返します。linspace は要素の数 num を指定し、既定で終点を含む等間隔の値を返します。
Qlinspaceで終点を含めないには?
endpoint=False を指定します。公式の例では np.linspace(2.0, 3.0, num=5, endpoint=False) が array([2., 2.2, 2.4, 2.6, 2.8]) になります。
Q小数の刻みはどちらを使いますか?
公式のリファレンスは、整数でない step では linspace のほうがよいことが多いと案内しています。
Qデータ分析試験の範囲?
本サイトの第3章 NumPy で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
