如何为元组的每个元素添加数字?

时间:2018-02-15 21:47:03

标签: python arrays list numpy tuples

hid = []
for counter,value in enumerate(alist):
    idx1 = np.where(attr['xval'].values == value[0])  #Find Serial index 
    idx2 = np.where(attr['xval'].values == value[1])
    hid.append(idx1)
    hid.append(idx2)

这给了我hid

[(array([7467]),),
 (array([7473]),),
 (array([7403]),),
 (array([7410]),),
 (array([7386]),),
 (array([7409]),),
 (array([7380]),),
 (array([7439]),),]

所有,我想要的是拥有这些值的列表/数组,并为每个值添加1

print(idx1[0])+1

Error: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

有更好的方法吗?由于元组是不可变的,我该怎么做呢?

ALIST

[array([511, 517], dtype=int32),
 array([447, 454], dtype=int32),
 array([430, 453], dtype=int32),
 array([424, 483], dtype=int32)]

2 个答案:

答案 0 :(得分:2)

使用

hid = [(array([7467]),),
       (array([7473]),),
       (array([7403]),),
       (array([7410]),),
       (array([7386]),),
       (array([7409]),),
       (array([7380]),),
       (array([7439]),)]

现在,每个元素都是一个列表,所以hid是一个列表列表。如果这是您想要的,没问题,但如果您想将其转换为平面列表,请使用hid = np.array(hid).flatten(),以获得像hid = [7467, 7473, 7403, 7410, 7386, 7409, 7380, 7439]这样的平面数组。

要用+1打印每个值,只需

hid_plus_one = tuple(np.array(hid)+1)
print(hid_plus_one)

hid_plus_one = tuple(v+1 for v in hid)
print(hid_plus_one)

也就是说,如果你想把它作为一个元组,或者你可以跳过tuple(..) - 部分

答案 1 :(得分:0)

numpy将在每个数组上广播添加标量

alst = [np.array([511, 517], dtype=np.int32),
 np.array([447, 454], dtype=np.int32),
 np.array([430, 453], dtype=np.int32),
 np.array([424, 483], dtype=np.int32)]

alst
Out[4]: [array([511, 517]), array([447, 454]), array([430, 453]), array([424, 483])]


[ary + 1 for ary in alst]
Out[6]: [array([512, 518]), array([448, 455]), array([431, 454]), array([425, 484])]