将数组'列'快速加载到数组变量中

时间:2014-06-14 22:48:48

标签: python

我知道我可以迭代一个数组并将每个索引的值附加到我的4个数组变量中,但是有更快,更少编码的方法吗?我很想知道我是否可以做这样的事情(显然不起作用):

tupleOfArrays = ([['s1',2,3], 
                  ['s2',3,4],
                  ['s5',6,7]])

arr1, arr2, arr3 = [(a[0],a[1],a[2]) for a in tupleOfArrays]

在这结束时,三个数组应该包含:

  arr1=['s1',2,5]
  arr2=['s2',3,6]
  arr3=['s3',4,7]

已编辑:我已对此进行了编辑,以反映我的结构'真正的'看起来这样选择的答案更有意义。我有一个包含列表列表的元组。内部列表的第一个元素是字符串。

非常感谢

3 个答案:

答案 0 :(得分:3)

首先,尝试使用Python命名法 - 你拥有的是列表元组。此外,Python中的名称(类名除外)通常为lowercase_with_underscores

要回答您的实际问题,请使用zip组合多个集合中相同索引的项目:

lst1, lst2, lst3 = map(list, zip(*tuple_of_lists))

zip默认生成元组,因此我使用map将它们转换为列表。

答案 1 :(得分:1)

如果你愿意使用numpy,

import numpy as np

tupleOfArrays = ([1,2,3], 
                 [2,3,4],
                 [5,6,7])

toa = np.array(tupleOfArrays)

arr1 = toa[:,0]
arr2 = toa[:,1]
arr3 = toa[:,2]

答案 2 :(得分:1)

如果你使用numpy,你可以使用转置方法来获得你想要的东西:

import numpy as np

tupleOfArrays = ([1,2,3], 
                 [2,3,4],
                 [5,6,7])

numpyList=np.array(tupleOfArrays)
arr1,arr2,arr3 = numpyList.transpose()

另外,要回答关于将值从字符串更改为int的注释,可以使用numpy方法astype

import numpy as np       

tupleOfArrays = (["1","2","3"], 
                     ["2","3","4"],
                     ["5","6","7"])

numpyList=np.array(tupleOfArrays)
transposed = numpyList.transpose()
arr1,arr2,arr3 = transposed.astype(np.int)