擅长:python、mysql、java
<p>您的方法的问题是<code>x>0</code>将返回一个1D布尔数组:</p>
<pre><code>import numpy as np
net = np.random.random((2, 5))
for i in net:
print(i > 0)
# [ True True True True True]
# [ True True True True True]
</code></pre>
<p>但是不能用<code>if</code>来计算这些数组:</p>
^{pr2}$
<blockquote>
<p>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</p>
</blockquote>
<hr/>
<p>如前所述,NumPy支持元素级操作,因此您可以简单地使用:</p>
<pre><code>net[net > 0] = 1
</code></pre>
<p>如果需要替换值的新数组,可以使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd3>}</a>的三参数形式:</p>
<pre><code>newnet = np.where(net > 0, 1, net)
</code></pre>
<p>要真正获得索引,可以使用<code>np.where</code>的单参数形式:</p>
<pre><code>indices = np.where(net > 0)
net[indices] = 1 # it can also be used to set the elements to 1.
</code></pre>