Python 使用lambda在numpy数组上迭代
我有这样一个numpy数字数组:Python 使用lambda在numpy数组上迭代,python,arrays,numpy,lambda,Python,Arrays,Numpy,Lambda,我有这样一个numpy数字数组:cols=np.arange(1,6)。我想在cols中的每个数字前面加上字母“t”。我写下以下文字: f = lambda x: 't' + str(x) temp = f(cols) print(temp) 我得到如下输出: t[1 2 3 4 5]. 我需要输出为['t1','t2','t3'…]。我需要做1000个数字。我做错了什么?您的问题是将函数应用于整个阵列。你的主要工作是: 't' + str(cols) 这当然行不通。您需要按元素应用它:
cols=np.arange(1,6)
。我想在cols中的每个数字前面加上字母“t”。我写下以下文字:
f = lambda x: 't' + str(x)
temp = f(cols)
print(temp)
我得到如下输出:
t[1 2 3 4 5].
我需要输出为['t1','t2','t3'…]。我需要做1000个数字。我做错了什么?您的问题是将函数应用于整个阵列。你的主要工作是:
't' + str(cols)
这当然行不通。您需要按元素应用它:
您的问题是您无法将函数应用于整个数组。你的主要工作是:
't' + str(cols)
这当然行不通。您需要按元素应用它:
您可以使用
np.core.char.add
:
np.core.char.add('t', np.arange(1,6).astype(str))
#array(['t1', 't2', 't3', 't4', 't5'],
# dtype='|S12')
对于大型阵列,它比列表(映射(…)更快:
%timeit np.core.char.add('t', np.arange(1,100000).astype(str))
# 10 loops, best of 3: 31.7 ms per loop
f = lambda x: 't' + str(x)
%timeit list(map(f, np.arange(1,100000).astype(str)))
# 10 loops, best of 3: 38.8 ms per loop
您可以使用
np.core.char.add
:
np.core.char.add('t', np.arange(1,6).astype(str))
#array(['t1', 't2', 't3', 't4', 't5'],
# dtype='|S12')
对于大型阵列,它比列表(映射(…)更快:
%timeit np.core.char.add('t', np.arange(1,100000).astype(str))
# 10 loops, best of 3: 31.7 ms per loop
f = lambda x: 't' + str(x)
%timeit list(map(f, np.arange(1,100000).astype(str)))
# 10 loops, best of 3: 38.8 ms per loop
您可以通过列表理解来实现这一点:
['t' + str(x) for x in cols]
['t1', 't2', 't3', 't4', 't5', 't6']
这将为集合cols中的每个元素x
追加“t”
lambda
函数是一个匿名函数,因此您通常将其传递到需要可调用对象的函数中。您可以通过列表理解来实现这一点:
['t' + str(x) for x in cols]
['t1', 't2', 't3', 't4', 't5', 't6']
这将为集合cols中的每个元素x
追加“t”
lambda
函数是一个匿名函数,因此,您通常将其传递到需要可调用对象的函数中。lambda的思想是它是匿名的,因此您不需要将其分配给变量。lambda的思想是它是匿名的,因此您不需要将其分配给变量。在我的计算机中,速度差异甚至更大:82.6ms
np.core.char.add
而163ms
用于list(map(…)
。在我的计算机中,速度差异更大:82.6ms
用于np.core.char.add
而163ms
用于list(map(…)
。