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]