Python 2.7 如何在python2.7中使用矢量化numpy函数?
我在ipython中尝试了以下代码:我想使用矢量化并给出函数prox(x,tau)。但是lambda中的第一个值总是出现两次Python 2.7 如何在python2.7中使用矢量化numpy函数?,python-2.7,numpy,Python 2.7,Numpy,我在ipython中尝试了以下代码:我想使用矢量化并给出函数prox(x,tau)。但是lambda中的第一个值总是出现两次 In [32]: a = np.array([[ 1., 2.],[ 3., 4.]]) In [33]: def prox(x, tau): ...: print x, tau ...: if x >= tau: ...: print "first" ...: return x-tau
In [32]: a = np.array([[ 1., 2.],[ 3., 4.]])
In [33]: def prox(x, tau):
...: print x, tau
...: if x >= tau:
...: print "first"
...: return x-tau
...: if -tau <= x and x <= tau:
...: print "second"
...: return 0.0
...: if x <= -tau:
...: print "third"
...: return x+tau
In [34]: b = np.vectorize(lambda x: prox(x, 2))(a[:,1:])
In [35]: b
2.0 2
first
2.0 2
first
4.0 2
first
[32]中的:a=np.array([1,2.],[3,4.])
在[33]中:def prox(x,tau):
…:打印x,tau
…:如果x>=tau:
…:打印“第一个”
…:返回x-tau
…:如果-tau如果未指定otypes
,则vectorize
使用第一个值执行测试计算,并使用该值确定它返回的数组的dtype
。因此,对第一个项目进行了双重评估
通常,额外的计算并不重要。但是要小心。如果初始计算返回一个整数(例如标量0),则返回的数组也将是整数,在后续计算中丢失任何浮点值
有关更多详细信息,请查看矢量化的文档
-意外的整数类型产生的错误。我在其他SO问题中也看到了这个错误