【发布时间】:2017-10-04 05:12:04
【问题描述】:
我有一个数值积分任务,我们用积分公式近似积分。我的问题是任务需要我避免循环并使用矢量化变体,这将是一个切片?!
我有具有 n 个值的 np.array 对象,我必须使用特定公式更改此数组的每个值。问题是该数组在点 i 的值在公式中用于更改位置。使用 for 循环很容易:
x = np.array([...])
for i in range(0,n):
x[i]=f(x[i]+a)*b`
(a,b 其他一些变量) 我如何用切片做到这一点?我必须对数组的所有元素都这样做,所以它会是这样的:
x[:]=f(x[???]+a)*b
我如何从我的数组中获得正确的位置到公式中?像 x[:] 这样的切片指令只是贯穿我的整个对象。有没有办法以某种方式保存我目前所在的索引? 我试图搜索但一无所获。另一个问题是我什至不知道如何正确地提出搜索请求......
【问题讨论】:
-
贴一个我们可以效仿的真实例子。你在做什么,你尝试过什么。例如,如果不知道
f是什么,就不可能有效地回答这个问题。 -
F 只是一个函数。 f= λx: np.sin(x)
-
只需
y = np.sin(x + a) * b。除非您要在x的子部分上进行操作,否则无需使用切片符号 -
你知道
np.sin是一个完全向量化的函数吗? -
好的,尝试解释我的问题。 (我不是 niteve 演讲者,所以请原谅语言错误)。