将两个字符串的值追加成对

时间:2015-06-29 16:25:51

标签: python numpy

我从两个numpy数组开始,“x值”和“y值”:

import numpy as np
x = np.arange(100)
y = np.arange(100)

输出

[ 0  1  2  3  4 ..... 96 97 98 99]
[ 0  1  2  3  4 ..... 96 97 98 99]

我想将这些值一起附加到len() = 100数组中,以便输出

[ (0,0) (1,1) (2,2) (3,3) .... (98,98) (99,99) ]

如何使用索引(A)以正确的顺序排列对,以及(B)以正确的顺序放置副词(和逗号,

3 个答案:

答案 0 :(得分:2)

对于您的特定要求,您可以使用内置的zip函数,该函数在其相应的索引处组合多个列表(即在返回的迭代器中组合的所有列表的第i个索引)

示例 -

import numpy as np
x = np.arange(100)
y = np.arange(100)
print(list(zip(x,y)))
>>> [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), (21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), (31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), (41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50), (51, 51), (52, 52), (53, 53), (54, 54), (55, 55), (56, 56), (57, 57), (58, 58), (59, 59), (60, 60), (61, 61), (62, 62), (63, 63), (64, 64), (65, 65), (66, 66), (67, 67), (68, 68), (69, 69), (70, 70), (71, 71), (72, 72), (73, 73), (74, 74), (75, 75), (76, 76), (77, 77), (78, 78), (79, 79), (80, 80), (81, 81), (82, 82), (83, 83), (84, 84), (85, 85), (86, 86), (87, 87), (88, 88), (89, 89), (90, 90), (91, 91), (92, 92), (93, 93), (94, 94), (95, 95), (96, 96), (97, 97), (98, 98), (99, 99)]

对于Python 2.x,请注意您不需要list(zip(...)),因为zip本身会返回list,但对于Python 3.x,zip会返回一个迭代器,并且要打印它,我们需要将其转换为list

答案 1 :(得分:1)

您可以使用np.dstack获取列:

>>> np.dstack((x,y))
array([[[ 0,  0],
        [ 1,  1],
        [ 2,  2],
        [ 3,  3],
        [ 4,  4],
        [ 5,  5],
        [ 6,  6],
        [ 7,  7],
        [ 8,  8],
        [ 9,  9],
           ...
        [99, 99]]])

如果你想得到元组而不是列表,你可以使用map将它转换为元组:

>>> map(tuple,np.dstack((x,y))[0])
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), (21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), (31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), (41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50), (51, 51), (52, 52), (53, 53), (54, 54), (55, 55), (56, 56), (57, 57), (58, 58), (59, 59), (60, 60), (61, 61), (62, 62), (63, 63), (64, 64), (65, 65), (66, 66), (67, 67), (68, 68), (69, 69), (70, 70), (71, 71), (72, 72), (73, 73), (74, 74), (75, 75), (76, 76), (77, 77), (78, 78), (79, 79), (80, 80), (81, 81), (82, 82), (83, 83), (84, 84), (85, 85), (86, 86), (87, 87), (88, 88), (89, 89), (90, 90), (91, 91), (92, 92), (93, 93), (94, 94), (95, 95), (96, 96), (97, 97), (98, 98), (99, 99)]
>>> 

答案 2 :(得分:0)

您可以使用vstack

In [36]: xy = np.vstack((x,y)).T

In [37]: xy.shape
Out[37]: (100, 2)

In [38]: xy[0]
Out[38]: array([0, 0])

In [39]: xy[1]
Out[39]: array([1, 1])