<p>可以使用<code>np.putmask</code>(参见此处)用基于这些值的公式替换特定值(参见<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.putmask.html#numpy.putmask" rel="nofollow noreferrer">here</a>)。你知道吗</p>
<p>至于你的情况,你可以<a href="https://python-reference.readthedocs.io/en/latest/docs/operators/modulus.html" rel="nofollow noreferrer">modulus</a>:这比使用字典更简单、更快。这代表你想要的输入/输出吗?你知道吗</p>
<pre><code>import numpy as np
n = 9
arr1=np.random.randint(0, 100, size=20)
arr2 = arr1.copy()
np.putmask(arr2, (arr1-n)%10 == 0, arr1 % 10)
print(arr1)
print(arr2)
</code></pre>
<blockquote>
<p>[69 70 63 52 27 96 0 40 2 90 36 24 17 90 67 58 74 50 11 58]</p>
<p>[ 9 70 63 52 27 96 0 40 2 90 36 24 17 90 67 58 74 50 11 58]</p>
</blockquote>
<p>为所需输出编辑:</strong></p>
<pre><code>n = 9
arr1=np.random.randint(0, 100, size=20)
arr2 = arr1.copy()
mask = (arr1-n)%10 == 0
np.putmask(arr2, mask , arr1 // 10)
np.putmask(arr2, ~mask , 10)
print(arr1)
print(arr2)
</code></pre>
<blockquote>
<p>[28 72 87 31 87 3 34 96 61 14 25 79 74 25 38 87 38 8 6 8]
[10 10 10 10 10 10 10 10 10 10 10 7 10 10 10 10 10 10 10 10]</p>
</blockquote>
<p>如果要使用字典,请在<code>.get</code>方法中设置默认值</p>
<pre><code>arr2 = np.vectorize(lambda x: d.get(x,10))(arr1)
</code></pre>