<p>您可以使用for循环,如下所示:</p>
<pre><code>reduced_array = []
for i in range(len(full_array)):
if full_array[i][1] == 'data_update':
reduced_array.append([i[0],i[2],i[3]])
</code></pre>
<p>或者通过列表理解</p>
<pre><code>reduced_array = [[i[0],i[2],i[3]] for i in full_array if i[1] == 'data_update']
</code></pre>
<p>如果需要处理更多的列,也可以使用</p>
<pre><code>cols = [0,2,3]
reduced_array = [[i[col] for col in cols] for i in full_array if i[1] == 'data_update']
</code></pre>
<p>关于<strong>adnanmuttaleb</strong>答案,使用lambda函数比我提出的列表理解方法快得多,但是如果有人不熟悉这个概念,它也会更困难。为了更全面,也不想因为他的回答而受到赞扬,我把它加在这里</p>
<pre><code>reduced_array = map(lambda sub: [sub[i] for i in cols], filter(lambda sub: "data_update" in sub, full_array))
</code></pre>
<p>运行时比较:</p>
<pre><code>import random as rd
import time
full_array = [[rd.random(),"data_update" if rd.random()< 0.2 else "no",rd.random(),rd.random()] for i in range(1000000)]
cols = [0,2,3]
start1 = time.time()
reduced_array = map(lambda sub: [sub[i] for i in cols], filter(lambda sub: "data_update" in sub, full_array))
print(time.time()-start1)
start2 = time.time()
reduced_array2 = [[i[col] for col in cols] for i in full_array if i[1] == 'data_update']
print(time.time()-start2)
</code></pre>
<p>导致</p>
<pre><code>#Lambda function:
0.004003286361694336
#List comprehension
0.254199743270874
</code></pre>