我有一个像这样的数字:cols = np.arange(1, 6)
。我想附上这封信' t'在cols中的每个数字前面。我写了followind loc:
f = lambda x: 't' + str(x)
temp = f(cols)
print(temp)
我得到这样的输出:
t[1 2 3 4 5].
我需要输出为[' t1',' t2',' t3' ...]。我需要为1000个数字做这件事。我做错了什么?
答案 0 :(得分:8)
您可以使用select sum(TIME_TO_SEC(TIMEDIFF(end, start))/60/60) as total from
(SELECT
created as start,
(select created from test t2 where
t2.created > t.created
and direction = 1 order by created limit 1) as end
FROM `test` t where direction = 0) intervals
:
np.core.char.add
对于大型数组,它比np.core.char.add('t', np.arange(1,6).astype(str))
#array(['t1', 't2', 't3', 't4', 't5'],
# dtype='|S12')
更快:
list(map(...))
答案 1 :(得分:3)
你可以用列表理解来做到这一点:
['t' + str(x) for x in cols]
['t1', 't2', 't3', 't4', 't5', 't6']
这将附加“' t'对于集合cols中的每个元素x
。
lambda
函数是一个匿名函数,因此通常将它传递给需要可调用对象的函数。
答案 2 :(得分:2)
您的问题是您将函数应用于整个数组。你基本上做了:
't' + str(cols)
这当然不起作用。您需要应用元素 -wise:
list(map(f, cols)) # No need for list() if using Python 2