<p>要生成数组,请填充<em>nR</em>行和<em>nC</em>列:</p>
<ul>
<li>在带有<em>valDiag</em>的对角线处</li>
<li>在对角线上使用<em>valUpper</em></li>
<li>对角线下方带有<em>valLower</em></li>
</ul>
<p>您可以使用以下功能:</p>
<pre><code>def genDiag(nR, nC, valUpper, valDiag, valLower):
slope = nC / nR
tbl = np.full((nR, nC), valDiag, dtype=float)
for r in range(nR):
tbl[r, 0 : int(round(slope * r, 0))] = valLower
tbl[r, int(round(slope * (r + 1), 0)) : nC] = valUpper
return tbl
</code></pre>
<p>要测试它,请在较小的数字上运行:</p>
<pre><code>res = genDiag(8, 14, 15.1, 0, 20.2)
print(res)
</code></pre>
<p>结果是:</p>
<pre><code>[[ 0. 0. 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1]
[20.2 20.2 0. 0. 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1]
[20.2 20.2 20.2 20.2 0. 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1]
[20.2 20.2 20.2 20.2 20.2 0. 0. 15.1 15.1 15.1 15.1 15.1 15.1 15.1]
[20.2 20.2 20.2 20.2 20.2 20.2 20.2 0. 0. 15.1 15.1 15.1 15.1 15.1]
[20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 0. 15.1 15.1 15.1 15.1]
[20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 0. 0. 15.1 15.1]
[20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 20.2 0. 0. ]]
</code></pre>
<p>如果您希望这张桌子没有单独填充对角线,
首先决定是否填充对角线元素
使用“上限”或“下限”值,然后将所选值作为<em>valDiag</em>传递</p>