擅长:python、mysql、java
<p>问题2的答案</p>
<P>只要你不是真的堆叠数组,而是重新排列它们,你就应该避免^ {CD1>}和^ {< CD2>},并考虑使用^ {CD3>}或^ {CD4}}。例如:</p>
<pre><code>ftemp_pte[:, i] = func_F(pointsToEval[:, i].reshape(1, -1)).ravel()
</code></pre>
<p>但是,numba不支持非连续数组上的<code>reshape()</code></p>
<p>因此,我已经设法使您的代码运行与numba通过转置一切,以避免重塑数组。以下代码确实有效,可能会给您一些想法:</p>
<pre><code>@nb.njit
def func_F(x):
f = np.zeros(2) # Simple 1d array
f[0] = x[0]
n = max(x.shape)
g = 1 + 9 * np.sum(x[1:n]) / (n - 1)
h = 1 - np.sqrt(f[0] / g)
f[1] = g * h
return f
@nb.njit(parallel=True)
def tempFtemp(ftemp_pte, func_F, numPointsEval, pointsToEval):
for i in nb.prange(numPointsEval):
ftemp_pte[i] = func_F(pointsToEval[i])
return ftemp_pte
ftemp_pte = np.zeros((2, 5)).T
pointsToEval = np.zeros((2, 5)).T
numPointsEval = 5
ftemp_pte = tempFtemp(ftemp_pte, func_F, numPointsEval, pointsToEval)
print(ftemp_pte.T)
</code></pre>