首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >numpy矢量化函数不返回预期的结果

numpy矢量化函数不返回预期的结果
EN

Stack Overflow用户
提问于 2022-10-23 11:42:22
回答 2查看 51关注 0票数 0

首先,我定义了一个relu函数并将其矢量化。

然后,我将一个任意列表输入到这个relu函数中,但是它返回错误的结果,因为relu( 1.5 )的值应该是1.5。

守则如下:

代码语言:javascript
复制
import numpy as np

def relu(x):
    return x if x > 0 else 0

relu = np.vectorize(relu)

print(relu([-3,-1.5,0,1.5,3]))
# result: array([0, 0, 0, 1, 3])

你能解释一下为什么会发生这种事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-23 11:51:02

因为除非指定了输出类型,否则矢量图从第一个元素假定类型。使用

代码语言:javascript
复制
relu = np.vectorize(relu,otypes=[float])
票数 3
EN

Stack Overflow用户

发布于 2022-10-23 12:05:37

我想我应该补充一点,np.vectorize不是真正的矢量化,它基本上是一个for循环。

矢量化函数主要是为了方便而不是为了性能而提供的。实现本质上是一个for循环。

你应该用这个代替:

代码语言:javascript
复制
def relu(x):
    return np.maximum(x, 0)

计时:

代码语言:javascript
复制
Your method:
%%timeit
relu([-3,-1.5,0,1.5,3])
27.1 µs ± 317 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

This method:
%%timeit
relu([-3,-1.5,0,1.5,3])
3.19 µs ± 14.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74170850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档