[英]Simplify merging of two numpy arrays at even and uneven points in Python
我编写了一个可以完成此任务的程序,但是它不是pythonic的,不是pythonic的,而且肯定不是很漂亮。
该程序必须以以下方式连接两个numpy数组:
例如,list0和list1是输入
list0 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list1 = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
输出应如下所示:
[0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11]
因此,基本上在输出的每个偶数点输入list0
的数目,并在每个不均匀点输入list1
的数目。
我对python相当陌生,所以我用C风格编写了它:
import numpy as np
list0 = np.arange(10)
list1 = np.arange(2,12)
new = []
cnt0 = 0
cnt1 = 0
for i in range(0,2*len(list0)):
if i % 2 == 0:
new.append(list0[cnt0])
cnt0 = cnt0 +1;
else:
new.append(list1[cnt1])
cnt1 = cnt1 +1;
现在,我想知道是否有更理想的,更Python化的,更快的方法来实现相同的目标?
好的itertools衬板
from itertools import chain
chain(*zip(list0, list1))
[0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11]
您可以使用zip
>>> output = [ data for elem in zip(list0,list1) for data in elem ]
[0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.