使用lambda迭代numpy数组

时间:2017-08-30 12:37:32

标签: python arrays numpy lambda

我有一个像这样的数字: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个数字做这件事。我做错了什么?

3 个答案:

答案 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