タイトルが示唆するように、私は区分的な関数でカーブフィットを試みています。次に例を示します。区分的関数による曲線フィット?
import numpy as np
import scipy.optimize as sio
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 11, 18, 27])
def f(x, a):
if x <= 2:
return x + a
elif x >= 3:
return x**2 + a
sio.curve_fit(f, x, y)
さて、これは次のエラーを返す:印刷機能を追加することにより
ValueError: The truth value of an array with more than one element is ambiguous
を、私は「X」の値が関数に渡されたためであると考え出し'f'は数値配列です[0, 1, 2, 3, 4, 5]
この問題を回避する方法があるのでしょうか。
ありがとうございます!
問題は、0 [ '場合は、求めていることがより具体的です1、2、3、4、5] <2」であることは真である。 numpyがこれを解釈する方法は配列 '[True、True、False、False、False]を返すことです。 Pythonはこれに対処する方法を知らない。私はあなたのコードがあなたがしたいこととは異なる何かをしていると思います。 f(x、a)に何をしたいですか? –
fの目的は、配列の各要素を調べることです。したがって、tom10が示唆したことは、配列を調べて各要素にfを適用することです。 – Zhaitan