擅长:python、mysql、java
<p>这里有一个numpy函数:<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow">np.where</a>:</p>
<pre><code>In [590]: AR1
Out[590]:
array([[0, 0, 0, 0],
[0, 0, 5, 0],
[0, 0, 0, 0]], dtype=uint32)
In [591]: np.where(AR1 >= 5, 0, 1)
Out[591]:
array([[1, 1, 1, 1],
[1, 1, 0, 1],
[1, 1, 1, 1]])
</code></pre>
<hr/>
<p>所以,你可以定义:</p>
^{pr2}$
<hr/>
<p>NumPy还提供了一种将普通Python函数转换为<a href="http://docs.scipy.org/doc/numpy/reference/ufuncs.html" rel="nofollow">ufuncs</a>的方法:</p>
<pre><code>def Spin2(n, N) :
value = n + 1
if value > N :
return 0
else : return value
Spin2 = np.vectorize(Spin2)
</code></pre>
<p>以便您现在可以对数组调用<code>Spin2</code>:</p>
<pre><code>In [595]: Spin2(AR1, 5)
Out[595]:
array([[1, 1, 1, 1],
[1, 1, 0, 1],
[1, 1, 1, 1]])
</code></pre>
<p>但是,np.矢量化主要提供语法糖分。对于每个数组元素仍然有一个Python函数调用,它使<code>np.vectorized</code>ufuncs<a href="http://www.mail-archive.com/numpy-discussion@scipy.org/msg00587.html" rel="nofollow">no faster than equivalent code using Python for-loops</a>。在</p>