更改数组中的元素-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 ])