linspace
Pythonの標準ライブラリにはmatlabのような関数がありますか?
そうでない場合、外部パッケージをインストールせずにそれを実装する簡単な方法はありますか?
これは、MATLAB用語でのlinspaceの迅速で簡単な定義です。
ノート
リンクで定義されている「ベクトル結果」は必要ありません。リストで問題ありません。
linspace
Pythonの標準ライブラリにはmatlabのような関数がありますか?
そうでない場合、外部パッケージをインストールせずにそれを実装する簡単な方法はありますか?
これは、MATLAB用語でのlinspaceの迅速で簡単な定義です。
ノート
リンクで定義されている「ベクトル結果」は必要ありません。リストで問題ありません。
いいえ、そうではありません。独自に作成することもできますが(難しいことではありません)、Pythonを使用してmatlabの機能の一部を実行している場合はnumpy
、をインストールする必要がありますnumpy.linspace
。
Matlabユーザー向けのNumPyが参考になるかもしれません。
これを実装する最も簡単な方法は、ジェネレーター関数です。
from __future__ import division
def linspace(start, stop, n):
if n == 1:
yield stop
return
h = (stop - start) / (n - 1)
for i in range(n):
yield start + h * i
使用例:
>>> list(linspace(1, 3, 5))
[1.0, 1.5, 2.0, 2.5, 3.0]
numpy.linspace()
とは言うものの、数値配列を便利に操作するための関数や他の多くの機能を提供するNumPyの使用を確実に検討する必要があります。
これを行う関数を定義できます。
def linspace(a, b, n=100):
if n < 2:
return b
diff = (float(b) - a)/(n - 1)
return [diff * i + a for i in range(n)]
間隔が1より大きい限り、これは次のMATLAB関数呼び出しに相当するPythonです。linspace(start,stop,spacing)
start = 5
stop = 6
spacing = int(11)
linspace = [start + float(x)/(spacing-1)*(stop-start) for x in range(spacing)]