让f
成为单个向量参数x
的实值python函数,定义为x
可以有多种长度。我希望在f
长度x
的所有m
上({1}}数字地整合m
,其中scipy.integrate.nquad
是一些固定的正整数。 f
似乎是几个变量中数值积分的一个很好的选择,但是,它要求输入函数m
被定义为def f(x_1, x_2, ..., x_m): ...
参数的函数,例如def f(x): ...
而不是scipy
。 (我假设argspec
需要这个,因为它从f(x)
或类似的东西中推断出积分变量的数量。)如何从我的函数m
中获得这样的函数? (我希望能够为scipy.integrate.nquad
的几个“大”值执行此操作,因此“手动”执行此操作并非可接受的答案。)
我也愿意接受import requests
from bs4 import BeautifulSoup
URL = 'http://www.nasdaq.com/symbol/amd/historical'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'lxml')
tableDiv = soup.find_all('div', id="historicalContainer")
tableRows = tableDiv[0].findAll('tr')
for tableRow in tableRows[2:]:
row = tuple(tableRow.getText().split())
print ('"%s",%s,%s,%s,%s,"%s"' % row)
的更好替代方案。
答案 0 :(得分:1)
你可以使用starargs,scipy会从集成限制中推断出参数的数量。琐碎的例子:
from scipy import integrate
def f(*args):
x, y, z = args
return x*y*z
integrate.nquad(f,[[0,1],[0,1],[0,1]])
# (0.12499999999999999, 5.527033708952211e-15)
所以你可以简单地包装你的函数:
def g(*args):
return f(np.asanyarray(args))