重新排列数组(python)

时间:2014-03-28 21:15:42

标签: python arrays zip repeat itertools

所以我有一个数组数组,比如

[array([-0.05504106,  4.21890792]), array([-0.05504106,  4.21890792]), array([-0.0533802 ,  4.10717668]), array([-0.0546635 ,  4.19501313])]

我正在尝试做的是将它变成一个包含2个数组的数组,其中组件放在一起如下:

[array([-0.05504106, -0.05504106, -.0533802, -.0546635]), array([4.21890792, 4.21890792, 4.10717668, 4.19501313])

我尝试了很多方法。第一个如下:

for i in range(len(array_1)-1):
zipped = zip(array_1[i], array_1[i+1], array_1[i+2])
print zipped

但是,这种方法的缺点是必须为array_1[i+n]内的每个附加数组添加array_1。如果array_1中包含许多数组,那么根本不可行。

我尝试的下一件事是尝试将itertools.repeat与上述代码结合使用,如下所示:

for i in range(len(array_1)-1):
zipped = zip(itertools.repeat(array_1[i], len(array_1))
print zipped
然而,这并没有按照我想要的方式发挥作用。

你能告诉我如何完成这项任务吗?我应该使用zip和/或intertools.repeat吗?

1 个答案:

答案 0 :(得分:1)

我不确定你使用的是哪个array课程,但是使用简单的列表你可以使用zip:

a = [[-0.05504106, 4.21890792], [-0.05504106, 4.21890792], [-0.0533802, 4.10717668],[-0.0546635, 4.19501313]]

b = list(zip(*a)) #omit list in python2
print(b)

打印:

[(-0.05504106, -0.05504106, -0.0533802, -0.0546635), (4.21890792, 4.21890792, 4.10717668, 4.19501313)]