Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lambda在numpy数组上迭代_Python_Arrays_Numpy_Lambda - Fatal编程技术网

Python 使用lambda在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) 这当然行不通。您需要按元素应用它:

我有这样一个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)
这当然行不通。您需要按元素应用它:


您的问题是您无法将函数应用于整个数组。你的主要工作是:

'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(…)