Python 2.7 如何在python2.7中使用矢量化numpy函数?

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

我在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
    ...:     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问题中也看到了这个错误