<p>定义一对数组:</p>
<pre><code>In [6]: x = np.arange(3); y = np.arange(10,13)
In [7]: x,y
Out[7]: (array([0, 1, 2]), array([10, 11, 12]))
</code></pre>
<p>尝试2的简单函数</p>
<pre><code>In [8]: x + y
Out[8]: array([10, 12, 14])
</code></pre>
<p>因为它们的大小相同,所以可以按元素求和(或以其他方式组合)。结果与2个输入具有相同的形状。你知道吗</p>
<p>现在试试“广播”。<code>x[:,None]</code>具有形状(3,1)</p>
<pre><code>In [9]: x[:,None] + y
Out[9]:
array([[10, 11, 12],
[11, 12, 13],
[12, 13, 14]])
</code></pre>
<p>结果是(3,3),第一个3来自重塑的<code>x</code>,第二个来自<code>y</code>。你知道吗</p>
<p>我可以用<code>meshgrid</code>生成一对数组:</p>
<pre><code>In [10]: I,J = np.meshgrid(x,y,sparse=True, indexing='ij')
In [11]: I
Out[11]:
array([[0],
[1],
[2]])
In [12]: J
Out[12]: array([[10, 11, 12]])
In [13]: I + J
Out[13]:
array([[10, 11, 12],
[11, 12, 13],
[12, 13, 14]])
</code></pre>
<p>注意<code>meshgrid</code>中添加的参数。这就是我们从一对一维数组生成二维值的方法。你知道吗</p>
<p>现在看看<code>sum</code>做了什么。在函数中使用时:</p>
<pre><code>In [14]: np.sum(I + J)
Out[14]: 108
</code></pre>
<p>结果是一个标量。见文件。如果我指定一个<code>axis</code>,我会得到一个数组。你知道吗</p>
<pre><code>In [15]: np.sum(I + J, axis=0)
Out[15]: array([33, 36, 39])
</code></pre>
<p>如果你给了<code>V_func</code>正确的<code>x</code>和<code>y</code>,那么<code>sum_list</code>可能是一个3d数组。无轴<code>sum</code>将其减少为标量。你知道吗</p>
<p>在这样的代码中,需要跟踪数组形状。如果需要,包括测试打印;不要只是假设什么;测试它。注意尺寸在通过各种操作时是如何增长和收缩的。你知道吗</p>