def q(s):
n = len(s)
v = numpy.zeros(n, dtype=float)
s
是一个包含我想要的许多元素的向量([s0,s1,s2,....,sn-2,sn-1]
),然后我打算创建一个与{{1}大小相同的数组(初始为零) }。
我的目标是将此数组中的零元素更改为s
。
我知道需要一个for循环,但我发现很难编程。有人可以提供帮助吗?谢谢。
答案 0 :(得分:1)
您不需要先创建一个零数组。
[b / a for a, b in zip(s, s[1:])]
<强>解释强>
s
您的列表,除了第一个元素外,您列出的是s[1:]
。
zip
将它们成对组合在一起,例如[[s0, s1], [s1, s2],... [sn-2, sn-1]]
。
然后你只需将每个子列表的第二个元素除以第一个元素。
答案 1 :(得分:1)
如果您使用的是NumPy数组,则不需要显式循环:
>>> import numpy as np
>>> a = np.array([10, 20, 30, 40, 50], dtype=float)
>>> a[1:]/a[:-1]
array([ 2. , 1.5 , 1.33333333, 1.25 ])