<p>形状<code>(W, H)</code>的NumPy数组有<code>W</code>行和<code>H</code>列。如果您想要<code>H</code>行和<code>W</code>列,那么数组的形状应该是<code>(H, W)</code>。在</p>
<p>所以使用</p>
<pre><code>hsls = np.zeros((H, W, 3), dtype=float)
</code></pre>
<p>我认为其他的一切都会自然而然地(没有翻转或换位)如果
从形状正确的数组<code>hsls</code>开始:</p>
^{pr2}$
<p>收益率</p>
<p><img src="https://i.stack.imgur.com/A5G4T.png" alt="enter image description here"/></p>
<p>请注意,此结果是您发布的结果的垂直镜像。但是
我可能会想,如果不换图像的话
实际上是你想要的结果。(您看到的图像与
如果要打印<code>hsls</code>,您将看到的数字。左上角
对应于<code>hsls[0,0]</code>,而在您的图像中<code>hsls[0,0]</code>对应于
左下角不管勾号怎么说。您可以通过将<code>hsls[:10,:10,:] = 0</code>放在<code>rgbs</code>的定义之前来测试这个断言。您将在<code>hsls[0,0]</code>所在的角落看到一个小的黑色正方形。)</p>
<hr/>
<p>要生成垂直镜像,请调用<code>ax.invert_yaxis()</code>。在</p>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
import colorsys
W = 512
H = 256
hsls = np.zeros((H, W, 3), dtype=float)
baseCol = np.linspace(0, 1, H)
hsls[:, :, 0] = baseCol[:, np.newaxis]
hsls[:, :, 1:3] = 0.5
vfunc = np.vectorize(colorsys.hsv_to_rgb)
rgbs = np.dstack(vfunc(hsls[:, :, 0], hsls[:, :, 1], hsls[:, :, 2]))
fig, ax = plt.subplots()
im = ax.imshow(rgbs, interpolation='nearest', aspect='auto')
plt.colorbar(im, orientation='horizontal')
ax.invert_yaxis()
plt.show()
</code></pre>
<p>收益率</p>
<p><img src="https://i.stack.imgur.com/ALEH8.png" alt="enter image description here"/></p>
<p>请注意,这也会反转记号标签,显示0从左下角开始。在</p>