如我所见,有两个选项。(这里numpy被导入为np)
1.使用lambda表达式
当我们处理一个简单的函数时,可以使用它。说我想实现功能f:(x,y)=(x ^ 2,x + y)。然后,我希望这样的工作:
f = lambda x,y : x**2, x + y
f = lambda x,y : (x**2, x + y)
当我打电话print(f(np.array([[1],[3]],float)))
或时print(f(np.array([1,3],float)))
。但是我无法使这些lambda表达式的任何变体起作用。
2.定义“适当”功能
但是,这确实有效:
def f(vec):
return np.array([vec[0] ** 2, vec[0] + vec[1]])
但是语法是否最佳?如果我不希望对上述“适当”功能进行矢量化处理,该怎么办。总之,我如何定义一个采用numpy-array值的numpy-array值函数?
使用lambda
或def
,还是使用本地定义的变量进行计算,都没有关系。如果使用函数,则输入参数的数量必须与定义匹配。
但让我们用简单的交互式示例进行演示
定义两个变量:
In [121]: x, y = 1,3
In [122]: x**2, x+y
Out[122]: (1, 4) # returns a tuple
定义一个列表:
In [125]: vec = [1,3]
In [126]: vec[0]**2, vec[0]+vec[1]
Out[126]: (1, 4) # same tuple
或数组:
In [127]: arr = np.array([1,3])
[126]
也可以使用此方法,但是索引数组的速度较慢。
当我们对整个数组而不是对元素进行处理时,数组是最好的。例如,我们可以对数组的所有项求平方或求和。
In [128]: arr**2, arr.sum()
Out[128]: (array([1, 9]), 4)
这些计算将适用于任何大小的数组,而不仅仅是形状(2,)。
以上任何元组都可以转换为数组:
In [133]: np.array([x**2, x+y])
Out[133]: array([1, 4])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句