擅长:python、mysql、java
<p>Python列表是用方括号定义的,我们希望生成一个列表列表(其中每个部分包含一个定义的段)。因为计算机从0开始计数,“第四个元素是开始”转换为数组索引=3。</p>
<p>一个怪癖是,要查询第4到第9个元素,我们将使用data_array[3:9]:这个切片表示法为您提供从指定的第一个元素开始到(但不包括)最后一个元素的每个元素。剩下的是一个列表理解,它遍历任意数量的步骤段。</p>
<pre><code>starts = [4, 15]
stops = [9, 20]
data_array = [0,0,0,10,20,50,40,30,10,0,0,0,0,0,10,20,50,40,30,10,0,0]
segments = [ data_array[starts[i] - 1: stops[i] ] for i in range( len(starts) ) ]
</code></pre>
<p>回报</p>
<pre><code>>>> segments
[[10, 20, 50, 40, 30, 10], [10, 20, 50, 40, 30, 10]]
</code></pre>
<p>每组步骤(段)可单独访问:</p>
<pre><code>>>>segments[0]
[10, 20, 50, 40, 30, 10]
</code></pre>
<p>编辑:或者。。。如果需要使用numpy数组,请尝试:
segments=array([data_array[starts[i]-1:stops[i]]for i in range(len(starts))])</p>
<p>我尝试在其他模块中直接获取数组(使用<code>itertools.islice</code>和<code>itertools.chain</code>、<code>numpy.fromiter</code>等)。但是,即使这个更奇特的解决方案奏效了,我也不确定它是否比转换成一个数组有显著的速度优势,而且它也不会那么简洁。见:<a href="https://stackoverflow.com/questions/367565/how-do-i-build-a-numpy-array-from-a-generator">How do I build a numpy array from a generator?</a></p>