<p>我认为更像熊猫式的方法是先计算<em>值</em>,然后将它们放入数据帧中,而不是反过来。在列表理解中执行计算并不能很好地利用Numpy和Pandas的内部向量优化</p>
<p>相反,您可以利用Numpy的广播功能首先获取矩阵:</p>
<pre class="lang-py prettyprint-override"><code>length = 5
X = np.linspace(lower, upper, num=length)
Y = np.linspace(lower, upper, num=length)
result = sunbrero(X[:, None], Y)
</code></pre>
<pre class="lang-py prettyprint-override"><code>array([[0.90929743, 0.94898462, 0.84147098, 0.94898462, 0.90929743],
[0.94898462, 0.47942554, 0.24740396, 0.47942554, 0.94898462],
[0.84147098, 0.24740396, 0. , 0.24740396, 0.84147098],
[0.94898462, 0.47942554, 0.24740396, 0.47942554, 0.94898462],
[0.90929743, 0.94898462, 0.84147098, 0.94898462, 0.90929743]])
</code></pre>
<p>并将其放入数据框中,如下所示:</p>
<pre class="lang-py prettyprint-override"><code>df = pd.DataFrame(result, index=X, columns=Y)
</code></pre>
<pre class="lang-py prettyprint-override"><code> -1.0 -0.5 0.0 0.5 1.0
-1.0 0.909297 0.948985 0.841471 0.948985 0.909297
-0.5 0.948985 0.479426 0.247404 0.479426 0.948985
0.0 0.841471 0.247404 0.000000 0.247404 0.841471
0.5 0.948985 0.479426 0.247404 0.479426 0.948985
1.0 0.909297 0.948985 0.841471 0.948985 0.909297
</code></pre>