<p>可以使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd1>}</a>,并将<code>where</code>参数设置为<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.divide.html" rel="nofollow noreferrer">^{<cd3>}</a>和<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.tan.html" rel="nofollow noreferrer">^{<cd4>}</a>。你知道吗</p>
<p><code>np.where(cond, a, b)</code>给出一个数组,其中来自<code>a</code>的值用于<code>cond</code>的真实元素,<code>b</code>的元素用于<code>cond</code>的虚假元素。你知道吗</p>
<p><code>np.divide</code>和<code>np.tan</code>的<code>where</code>参数告诉它们只在另一个数组中为真的位置执行操作,并保留一些未初始化的其他元素(因此它们可以是任何元素,但这并不重要,因为这里不使用它们)。你知道吗</p>
<pre><code>nonzero = x != 0 # we only care about places where x isn't 0
# Get tan, then divide by x, but only where x is not 0
nonzero_tan = np.tan(x, where=nonzero)
nonzero_tanc = np.divide(nonzero_tan, x, where=nonzero)
# Where x is not zero, use tan(x)/x, and use 1 everywhere else
tanc = np.where(nonzero, nonzero_tanc, 1)
</code></pre>
<hr/>
<p>正如hpaulj在他们的注释中所建议的,您还可以通过使用<code>np.divide</code>的<code>out</code>参数来定义输出数组的默认值来组合最后两个步骤:</p>
<pre><code>nonzero = x != 0
nonzero_tan = np.tan(x, where=nonzero)
tanc = np.divide(nonzero_tan, x, out=np.ones_like(x), where=nonzero)
</code></pre>