天天看點

python中的array函數作用_在Python中內建傳回數組的函數

我有很多資料要整合,我想找到一種方法來做所有的矩陣,并願意妥協的準确性,以提高性能。我的想法是這樣的:import numpy

import scipy

a = np.array([1,2,3])

def func(x):

return x**2 + x

def func2(x):

global a

return a*x

def integrand(x):

return func(x)*func2(x)

integrated = quad(integrand, 0, 1)

是以我嘗試将integrand中的每個元素內建到數組中。在

我知道有可能像這樣使用numpy.vectorize():

^{pr2}$

但我不能讓它發揮作用。在python中有沒有一種方法可以做到這一點?在

解決方案

好吧,現在我學到了更多的python,如果有人碰巧穩定在它上面并且有同樣的問題,我可以回答這個問題。這樣做的方法是編寫函數,就好像它們将接受标量值,而不是向量作為輸入。按照我上面的代碼,我們得到的是import numpy as np

import scipy.integrate.quad

a = np.array([1, 2, 3]) # arbitrary array, can be any size

def func(x):

return x**2 + x

def func2(x, a):

return a*x

def integrand(x, a):

return func(x)*func2(x, a)

def integrated(a):

integrated, tmp = scipy.integrate.quad(integrand, 0, 1, args = (a))

return integrated

def vectorizeInt():

global a

integrateArray = []

for i in range(len(a)):

integrate = integrated(a[i])

integrateArray.append(integrate)

return integrateArray

不是說你正在積分的變量必須是函數的第一個輸入。這是必需的scipy.integrate.quad. 如果您在一個方法上進行積分,它是典型的self(即x被內建到def integrand(self, x, a):)之後的第二個參數。另外,args = (a)是告訴quad函數中a的值所必需的。如果integrand有很多參數,比如def integrand(x, a, b, c, d):您隻需将這些參數按順序排列在args中。那就是args = (a, b, c, d)。在