Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一个数组中平均每2个数据点创建一个新数组_Python_Arrays_Numpy - Fatal编程技术网

Python 在一个数组中平均每2个数据点创建一个新数组

Python 在一个数组中平均每2个数据点创建一个新数组,python,arrays,numpy,Python,Arrays,Numpy,我试图取数组中每2个值的平均值,并将新数据存储在新数组中 这是我所能做到的: y1 = np.array([1,2,3,4,5,6,7,8,9,10]) avgy = [0]*(len(y1)//2) for i in range (0, len(y1)-1): if (2*(1+i)<=len(y1)): avgy[i] = ( y1[i+2[i]] + y1[2+2*i] )/2 print(avgy) y1=np.数组([1,2,3,4,5,6,7,8

我试图取数组中每2个值的平均值,并将新数据存储在新数组中

这是我所能做到的:

y1 = np.array([1,2,3,4,5,6,7,8,9,10])

avgy = [0]*(len(y1)//2)

for i in range (0, len(y1)-1):
    if (2*(1+i)<=len(y1)):
        avgy[i] = ( y1[i+2[i]] + y1[2+2*i] )/2

print(avgy)
y1=np.数组([1,2,3,4,5,6,7,8,9,10])
avgy=[0]*(len(y1)//2)
对于范围(0,len(y1)-1)内的i:

如果(2*(1+i)我认为这是一个简单的打字错误。
y1[i+2[i]]+y1[2+2*i]
应该是

y1[2*i] + y1[2*i+1]
Python列表从索引0开始


如果

我认为这是一个简单的打字错误,你可能需要调整你的
y1[I+2[I]+y1[2+2*I]
应该是

y1[2*i] + y1[2*i+1]
Python列表从索引0开始

你可能需要调整你的
,如果

一个整洁(如果有点棘手)的方法是以创造性的方式使用切片和
zip
——参见下面的控制台记录

#输入数据。
>>>y1=[1,2,3,4,5,6,7,8,9,10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#看看偶数和奇数。
>>>y1[::2],y1[1::2]
([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
#使用zip将这两个五人列表转换为五个两人列表。
>>>邮政编码(*(y1[::2],y1[1::2]))
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
#对两人进行列表理解,得出平均值。
>>>[(a+b)/2.对于拉链中的(a,b)((y1[:2],y1[1::2]))
[1.5, 3.5, 5.5, 7.5, 9.5]
如果列表的长度不能被二整除,这将崩溃。

一种简洁(如果有点棘手)的方法是创造性地使用切片和
zip
——请参阅下面的控制台记录

y1 = [1,2,3,4,5,6,7,8,9,10]

avgy = []
for i in range(0,len(y1),2):
    avgy.append((y1[i]+y1[i+1])/2)

print(avgy)
#输入数据。
>>>y1=[1,2,3,4,5,6,7,8,9,10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#看看偶数和奇数。
>>>y1[::2],y1[1::2]
([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
#使用zip将这两个五人列表转换为五个两人列表。
>>>邮政编码(*(y1[::2],y1[1::2]))
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
#对两人进行列表理解,得出平均值。
>>>[(a+b)/2.对于拉链中的(a,b)((y1[:2],y1[1::2]))
[1.5, 3.5, 5.5, 7.5, 9.5]
如果列表的长度不能被2整除,则会崩溃

y1 = [1,2,3,4,5,6,7,8,9,10]

avgy = []
for i in range(0,len(y1),2):
    avgy.append((y1[i]+y1[i+1])/2)

print(avgy)
这将给你一个平均值列表

y1 = np.array([1,2,3,4,5,6,7,8,9,10)]

avgy = ((y1 + np.roll(y1,1))/2.0)[1::2]
这将给你一个平均值列表

y1 = np.array([1,2,3,4,5,6,7,8,9,10)]

avgy = ((y1 + np.roll(y1,1))/2.0)[1::2]
编辑:此方法比使用for循环快20倍左右,比使用zip和列表理解快90倍左右


编辑:此方法比使用for循环快20倍左右,比使用zip和列表理解快90倍左右。

i+2[i]
应该做什么?这就是导致错误的原因。
i+2[i]
应该做什么?这就是导致错误的原因。