私はコーディングの新人です。私はBokehと協力しようとしています。私はここで何か間違っていたかどうか教えてください。np.linspace vs Bokehの範囲
私はthis exampleとBokehのウェブサイトで遊んでいますが、問題が発生しました。この例のようにx値が設定されている場合、np.linspaceを使用して、対話を使用して更新機能で再生できます。しかし、xをリストに変更してrange()を使用すると、次のエラーが表示されます。TypeError:リストに連結できるのはリストだけです( "float"ではなく)。私が理解しているように、問題は「x +φ」にあります.xはリストであり、φは浮動小数点ですからです。
リストをfloatで連結することはできませんが、numpy.ndarrayを使用してPythonがy値を制御する関数を変更したいと理解しているのはなぜですか? https://docs.python.org/3.6/tutorial/datastructures.html
あなたはまた、次のコードで遊ぶことができます:
x = np.linspace(0,10,1000)
y = np.sin(x)
p = figure(title="example", plot_height=300, plot_width=600, y_range=(-5,5))
r = p.line(x, y)
def update(f, w=1, A=1, phi=0):
if f == "sin": func = np.sin
elif f == "cos": func = np.cos
elif f == "tan": func = np.tan
r.data_source.data["y"] = A * func(w * x + phi)
push_notebook()
show(p, notebook_handle=True)
interact(update, f=["sin", "cos", "tan"], w=(0,100), A=(1,5), phi=(0,20, 0.1))
'+ '演算子とはまったく異なる意味を割り当てます。彼らは非常に異なるタイプであり、あなたは決して他と同じように動作すると仮定してはいけません。 – user2357112
'x = np.arange(0,10、.01)'を使うことができます。これは 'range'のようなパラメータを持ちますが、' numpy'配列を生成します。 – hpaulj
'+'演算子は、numpy配列に対して加算を行いますが、リストに対しては加算を行います。 'np.array([1])+ np.array([1])== np.array([2])'ではなく、 '[1] + [1] == [1、1]'です。 @hpauljが述べたように、 'range'の代わりに' np.arange'を使用すると、リストではなく配列の出力が得られます。 –