回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试用0到5的新值对值从0到15的数组进行重新分类。你知道吗</p>
<p>我的情况如下:</p>
<pre><code>con1 = np.in1d(arr, [0, 11, 13, 15]).reshape((y, x)) # new val 0
con2 = np.in1d(arr, [1, 2, 3, 4, 5]).reshape((y, x)) # new val 1
con3 = (arr == 6) | (arr == 7) # new val 2
con4 = (arr == 8) | (arr == 9) # new val 3
con5 = (arr == 10) # new val 4
con6 = (arr == 12) | (arr == 14) # new val 5
</code></pre>
<p>我用python写了下面一行</p>
<pre><code>return np.where(con1, 0, np.where(con2, 1, np.where(con3, 2, np.where(con4, 3, np.where(con5, 4, np.where(con6, 5, arr))))))
</code></pre>
<p>长度为128个字符(包括函数内部的缩进)。PEP8建议行不能超过79个字符。但是,我不确定在保持可读性的同时,将这一行拆分为多行的最佳方法是什么。你知道吗</p>
<p>我试过两种选择,但似乎很难读懂。你知道吗</p>
<p><strong>选项1:</strong></p>
<pre><code>return np.where(con1, 0, np.where(
con2, 1, np.where(
con3, 2, np.where(
con4, 3, np.where(
con5, 4, np.where(
con6, 5, arr))))))
</code></pre>
<p><strong>选项2:</strong></p>
<pre><code>return np.where(con1, 0,
np.where(con2, 1,
np.where(con3, 2,
np.where(con4, 3,
np.where(con5, 4,
np.where(con6, 5, arr)
)))))
</code></pre>