<p>要生成每个维度的值范围,请定义以下函数:</p>
<pre><code>def getRng(rngStart, rngStop, step, start):
wrk = np.arange(rngStart, rngStop, step) - start
shft = wrk[wrk < 0][-1]
return np.arange(rngStart - shft, rngStop, step)
</code></pre>
<p>为了测试它,我假设以下数据:</p>
<pre><code>left, bottom = 0, 0
right, top = 3, 2
x, y = 0.4, 0.12 # Starting point
w = 0.25; h = 0.3 # Step in x / y axis
</code></pre>
<p>然后我为两个轴生成了范围:</p>
<pre><code>rngX = getRng(left, right, w, x)
rngY = getRng(bottom, top, h, y)
</code></pre>
<p>获取:</p>
<pre><code>array([0.15, 0.4 , 0.65, 0.9 , 1.15, 1.4 , 1.65, 1.9 , 2.15, 2.4 , 2.65, 2.9 ])
array([0.12, 0.42, 0.72, 1.02, 1.32, 1.62, 1.92])
</code></pre>
<p>要生成预期结果(点列表),您可以运行:</p>
<pre><code>result = np.transpose([np.tile(rngX, rngY.size), np.repeat(rngY, rngX.size)])
</code></pre>
<p>它的最初部分是:</p>
<pre><code>array([[0.15, 0.12],
[0.4 , 0.12],
[0.65, 0.12],
[0.9 , 0.12],
[1.15, 0.12],
[1.4 , 0.12],
[1.65, 0.12],
[1.9 , 0.12],
[2.15, 0.12],
[2.4 , 0.12],
[2.65, 0.12],
[2.9 , 0.12],
</code></pre>
<p>然后按照类似的“部分”查看<em>rngY</em>中的其他值</p>
<h2>编辑</h2>
<p>生成最终结果的另一个更简洁的解决方案是:</p>
<pre><code>result2 = np.array(np.meshgrid(rngX, rngY)).T.reshape(-1,2)
</code></pre>
<p>(分数的顺序不同,但我认为这并不重要)</p>