2014-12-06 2 views
0

나는 2 차원 배열을 가지고가는 것은 NumPy와를 사용하여 만든 : 파이썬 : 평균에 비해 많은 행과 고정 칼럼

>>d=np.random.randint(0, 100, (4,5)) 
    d=array([[19, 7, 22, 73, 84], 
      [ 1, 78, 49, 99, 25], 
      [43, 97, 17, 83, 1], 
      [98, 1, 81, 4, 82]]) 

각 열은 특정 주파수에 해당하는 동안의 각 행은 특정 시간에 해당하는 가정하자. 모든 열에 대해 평균 2 행을 새로 배열 y [2] [5]에 저장해야합니다. 예 : y [0] = 평균 (19,1), y [1] [0] = 평균 (43,98), y [0] [1] = 평균 (7,78) 등.

나는 평균이 뭔가를 시도하고있다 :

for i in range(0,len(d)/2): 
    for j in range(0, 5): 
     r1=2*i 
     r2=2*(i+1) 
     y[i][j]=np.mean(d[r1:r2][j]) 

가 표시 그러나 :

y[i][j]=np.mean(d[r1:r2][j]) 
IndexError: index 4 is out of bounds for axis 0 with size 4 

올바른 방법으로 np.mean 사용에 대한 어떤 제안?

당신은 두 2X5 배열로 배열 슬라이스 수

답변

2

는 다음 두 개의 배열의 각 열에 평균을 다시 함께 넣어 vstack를 사용

>>> np.vstack((d[:2].mean(axis=0), d[2:].mean(axis=0))) 
array([[ 10. , 42.5, 35.5, 86. , 54.5], 
     [ 70.5, 49. , 49. , 43.5, 41.5]]) 

귀하의 오류는 때문에 발생 d[r1:r2][j]을 사용하여 두 행이있는 d의 하위 배열을 만든 다음 인덱스가 1보다 큰 하위 배열의 행에 액세스하려고합니다 (나는 j 열을 액세스하려고합니다).

작동하려면 코드를 d[r1:r2, j]으로 바꾸어야하지만 파이썬 for 루프가 아닌 NumPy 메서드를 사용하는 것이 좋습니다.

+0

감사합니다. 그것은 효과가있다! – user3440489

관련 문제