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'
有更好的方法吗?由于元组是不可变的,我该怎么做呢?
[array([511, 517], dtype=int32),
array([447, 454], dtype=int32),
array([430, 453], dtype=int32),
array([424, 483], dtype=int32)]
答案 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])]