回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有一个数组<code>p</code>在形状<code>(m, n)</code>,一个阈值向量<code>Ts</code>在形状<code>(m)</code>。我想使用以下规则替换<code>p</code>中的值:</p>
<pre class="lang-py prettyprint-override"><code>for i in range(m):
for j in range(n):
if p[i, j] > Ts[i]:
p[i, j] = Ts[i]
</code></pre>
<p>我的实施是:</p>
<pre><code>newP = np.zeros_like(p)
cond = p > Ts[:, None]
newP += cond * Ts[:, None]
newP += ~cond * p
p = newP
</code></pre>
<p>它看起来确实很难看。我想知道是否有类似<code>p[cond]=Ts</code>风格的方法。谢谢:)</p>
<hr/>
<p>例如:</p>
<pre><code># m = 2, n = 5
p = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
Ts = np.array([3, 8])
expected_new_p = \
np.array([[1, 2, 3, 3, 3],
[6, 7, 8, 8, 8]])
</code></pre>