我发现使用迭代器从列表到元组的this question,但我处理的是大数据集。
我发现this question从元组到列表,实际上有一堆问题从元组列表到数组,但我还没有找到如何向另一个方向发展...
我有:
np.arrray([[ 0 1]
[ 1 1]
[ 2 1]
...,
[1004 3]
[1005 1]
[1006 1]])
我想:
np.arrray([( 0 1)
( 1 1)
( 2 1)
...,
(1004 3)
(1005 1)
(1006 1)])
我不一定需要一大堆元组,但我想要有效地做到这一点。
答案 0 :(得分:5)
要有效地矢量化此转换,请进行转置
a = np.array([[ 0 , 1],
[ 1 , 1],
[ 2 , 1],
[ 0 , 1],
[ 1 , 1],
[ 2 , 1] ])
at = a.T
at= array([[0, 1, 2, 0, 1, 2],
[1, 1, 1, 1, 1, 1]])
然后zip
将两个1D列表转换为元组列表
zip(at[0],at[1])
这将明显快于列表理解
但是在python 3.4中
list(zip(at[0],at[1])
Out []:
[(0, 1), (1, 1), (2, 1), (0, 1), (1, 1), (2, 1)]
编辑:感谢@Divakar
直接切片可能会稍快一些:zip(a[:,0], a[:,1])
答案 1 :(得分:0)
您可以使用一些简单直接的 Python 并获取元组列表(或其他任何内容):
list(map(tuple, arr))
其中 map()
只是将 tuple()
依次应用于数组的每一行。