Python 访问向量化函数中的数组元素

Python 访问向量化函数中的数组元素,python,arrays,numpy,Python,Arrays,Numpy,我试图写一个函数,计算给定输入的辛普森积分。这些输入的一部分可以是float或np.array的形式 目前,我的职能如下: s = np.array([0.2,0.3,0.4]) @np.vectorize def recovery(s,R0,n): x = np.linspace(s,1,n) y = 1/(x*R0(x)) ans = simp(y,x) return ans 这可以很好地工作并返回: array([a, b, c]) ## Where

我试图写一个函数,计算给定输入的辛普森积分。这些输入的一部分可以是
float
np.array
的形式

目前,我的职能如下:

s = np.array([0.2,0.3,0.4])

@np.vectorize
def recovery(s,R0,n):

    x = np.linspace(s,1,n)
    y = 1/(x*R0(x))
    ans = simp(y,x)

    return ans
这可以很好地工作并返回:

array([a, b, c]) ## Where a, b and c are the correct answers
但是,如果我只想通过以下方式访问函数中数组中的第一个元素:

return ans[0]
我收到错误消息:

IndexError: invalid index to scalar variable
在尝试处理输出“ans”时,我也会遇到各种各样的错误,例如:

该函数的目的是,如果输入
s
为浮点,则返回
float
;如果
s
输入为
np.ndarray
,则返回
array


我是一名完全的python初学者,因此非常感谢您提供的任何帮助。

要仅访问返回数组的第一个元素,您需要在函数外部执行,而不是在函数内部,因为在函数内部
ans
仍然是一个标量

那么一会儿

return ans[0]
不起作用

recovery(s,R0,n)[0]

会有用的

这里令人困惑的是,decorator
@np.vectorize
将函数从标量到标量的映射更改为矢量到矢量的映射。但是这种操作是在“外部”功能
恢复
;在函数的原始源代码中,一切都好像它仍然是一个标量函数


这就是为什么当您编写
返回ans[0]
时,Python抱怨您试图索引标量;在函数内部,
ans
是一个标量。

“这可以正常工作并返回”-请添加一个示例,说明如何调用该函数以及获得了什么。数字,而不是a、b、c。还有什么是
simp
?请让你的例子独立起来。
np.vectorize
对于这个或初学者来说都不是一个好功能。这对速度没有帮助,正确使用也很棘手。
recovery(s,R0,n)[0]
ans = recovery(s,R0,n)
ans[0]