更改数组中的元素-Python

更改数组中的元素-Python,python,arrays,numpy,Python,Arrays,Numpy,s是一个包含任意多个元素的向量([s0,s1,s2,…,sn-2,sn-1]),然后我打算创建一个与s大小相同的数组(初始全是零) 我的目标是将该数组中的零元素更改为[s1/s0,s2/s1,s3/s2…,sn-1/sn-2] 我知道需要一个for循环,但我发现编程很困难。有人能帮忙吗?多谢各位 您不需要先创建一个零数组 def q(s): n = len(s) v = numpy.zeros(n, dtype=float) 解释 s您的列表,s[1:][/code>是除第一

s
是一个包含任意多个元素的向量(
[s0,s1,s2,…,sn-2,sn-1]
),然后我打算创建一个与
s
大小相同的数组(初始全是零)

我的目标是将该数组中的零元素更改为
[s1/s0,s2/s1,s3/s2…,sn-1/sn-2]


我知道需要一个for循环,但我发现编程很困难。有人能帮忙吗?多谢各位

您不需要先创建一个零数组

def q(s):
    n = len(s)
    v = numpy.zeros(n, dtype=float)

解释

s
您的列表,
s[1:][/code>是除第一个元素之外的列表

zip
将它们成对地放在一起,比如
[[s0,s1],[s1,s2],…[sn-2,sn-1]


然后,只需将每个子列表的第二个元素除以第一个元素。

如果使用NumPy数组,则不需要显式循环:

[b / a for a, b in zip(s, s[1:])]

请先尝试一些东西,然后如果你被卡住了,告诉我们你尝试了什么,在哪里被卡住了,这里的Python社区很乐意提供帮助。@AshwiniChaudhary,你是对的。我改变了除法的顺序。您好,谢谢您的帮助,我可以看出这是可行的。但对于这个函数,我想首先创建一个零数组;然后改变零。(尽管我知道这是冗长而不必要的!)
>>> 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      ])