擅长:python、mysql、java
<h2>你的问题</h2>
<p>您需要遍历所有行和列:</p>
<pre><code>for i in range(row):
for j in range(col):
</code></pre>
<p>您只需循环前两个:</p>
<pre><code>col = 3
row = 3
</code></pre>
<p>在Python中,<code>range(start, end)</code>给出了一个范围,起始形式为<code>start</code>包含和<code>end</code>独占。你知道吗</p>
<pre><code>for i in range(0,2):
for j in range(0,2):
</code></pre>
<p>顺便说一句,在Python中,行是第一个维度,所以这样更好:</p>
<pre><code>mymatrix = np.random.rand(row, col)
</code></pre>
<p>即使<code>row</code>和<code>col</code>在您的案例中具有相同的值。你知道吗</p>
<h2>更好的解决方案</h2>
<p>使用NumPy数组时,应该尽量避免循环,
因为循环真的很慢。根据我的经验,NumPy数组上的循环甚至比Python列表上的循环还要慢。
因此,最好:</p>
<pre><code>np.where(mymatrix <= 0.5, -1, 1)
</code></pre>
<p>这是一个矢量化的版本,速度更快。
使用NumPy的目标之一通常是速度。你知道吗</p>
<blockquote>
<p><code>where(condition, [x, y])</code></p>
<p>Return elements, either from <code>x</code> or <code>y</code>, depending on <code>condition</code>.</p>
</blockquote>