2017-11-01 1 views
0

5 개의 다른 행렬을 반복하여 결과 행렬을 생성하고 싶습니다. 먼저 모든 행렬의 첫 번째 값을 취하여이 값의 평균을 취하여 결과를 첫 번째 값으로 추가하려고합니다. 결과 매트릭스. 아무도 numpy 라이브러리를 사용하여 파이썬에서이 작업을 수행 할 수 있습니까 ??numpy를 사용하여 파이썬에서 행렬을 반복하기

+1

모든 행렬이 같은 모양입니까? 그들은 어떤 용기에 있습니까? [mcve]를 제공 할 수 있습니까? –

답변

0

일반적으로 파이썬 기반 루핑을 피하고 numpy가 (더 빨리) c 기반 루핑 (또는 루핑 없음)을 수행하도록하고 싶습니다.

대부분의 사람들은 명시 적 루프를 제거하는 접근법을 (numpy-) 벡터화로 부르며 성능 향상을 위해 매우 중요합니다.

다음 예제는 크기가 (3,3) 인 5 개의 numpy 배열을 만듭니다 (존재하는 행렬 유형은 더 이상 사용되지 않으며 여기서는 사용되지 않고 대부분의 numpy 사용자는 행렬 대체로 배열을 사용해야 함). 같은 모양을 가진 모든 평균을 포함하는 행렬 (행렬에 대한 원소 평균); 2 차원 배열을 행렬로 해석합니다. 2의 배열을 지정해,

for row in range(array.shape[0]): 
    for col in range(array.shape[1]): 
     cell_value = array[row, col] 
     ... 

: 당신은 여전히 ​​루프하려면

(5, 3, 3) 
[[0 0 0] 
[0 1 0] 
[2 4 0]] 
[[4 2 0] 
[3 3 4] 
[0 4 0]] 
[[3 4 0] 
[2 2 1] 
[0 0 4]] 
[[3 1 2] 
[4 3 4] 
[2 0 3]] 
[[3 4 2] 
[3 1 0] 
[1 0 0]] 
[[ 2.6 2.2 0.8] 
[ 2.4 2. 1.8] 
[ 1. 1.6 1.4]] 

, 당신은 단지 같은 중첩 루프를 사용할 수 있습니다

import numpy as np 

a, b, c, d, e = [np.random.randint(0, 5, size=(3,3)) for i in range(5)] 

all = np.stack((a, b, c, d, e), axis=0) 
print(all.shape) 

x = np.mean(all, axis=0) 

print(a) 
print(b) 
print(c) 
print(d) 
print(e) 

print(x) 

아웃 :

코드

치수.

+0

그것은 완벽한 대답입니다! – Esha

관련 문제