条件付きで定義された関数をプロットしようとしています。 D(x-x0)より小さいabs(x-x0)の場合、U(x)=(2 **デルタ)/((Dd)**デルタ)*(D/2-(x-x0))**デルタ。 D /そうでなければ2と0です。NumpyとPyplotによる条件付きプロット
しかし、私の問題は、numpy配列としてx、x0を使用したいということです。実際のコードの残りの部分でこれを使用する方法です。
私がセットアップしている次の例を:
import numpy as np
import matplotlib.pyplot as plt
AD = 0.2
D = 0.4
delta = 8
def Parabolic(x, delta, D, AD):
x0 = np.round(x)
tempx = np.abs(x-x0)
tempD = D/2*np.ones(len(x))
if tempx<tempD:
return ((2**delta)/(D-AD)**delta)*(D/2 - (x-x0))**delta
else:
return 0
figure = plt.figure(figsize=(10,8), dpi=72)
xmin = -1.0
xmax = 1.0
X = np.linspace(xmin,xmax,1000)
plt.plot(X, Parabolic(X, delta=8, D=0.4, AD=0.2))
ラインtempx<tempD
は、リストの真理値があいまいであるというエラーが発生しますので、明らかにこの例では、動作しません。
numpyのドキュメントを検索し、関数np.less(tempx、tempD)が見つかりました。しかし、tempx < tempD
をnp.less(tempx, tempD)
に置き換えても、それはもう一度私はリスト全体の真理値を求めているので、まだ動作しません。問題はnumpyではなく、numpyが提供する論理関数の使い方を理解することができないことを理解しています。
これは別の投稿で何らかの回答があった場合は申し訳ありませんが、私はこのフォーラムで検索しましたが、curve()
メソッドのほかに何かを見つけることができませんでした。しかし私は実際のコードで使用するためにnumpy.array形式を保持したい。私は答えが非常にシンプルでなければならないと確信しています、私はそれを考えることができません。
、HTTPを参照してください:// stackoverflow.com/a/30081652/901925とそのサイドバー。 – hpaulj