2017-04-19 4 views
0

I N 요소의 다음 두 NumPy와 배열을 가지고두 개의 다른 배열에서 요소 별 계산에서 배열을 반환하는 방법은 무엇입니까?

A = np.array([2 5 8 9 8 7 5 6]) 
B = np.array([8 9 6 5 2 8 5 7]) 

나가 어레이 C를 획득하고자을 :

, 배열 C는 n 개의 요소로 구성 할 것이다
C = np.array([sqrt(2^2+8^2) sqrt(5^2+9^2) ... sqrt(6^2+7^2)]) 

; 각 요소는 A의 각 요소의 제곱근에 B의 각 요소의 제곱을 더한 것과 같습니다.

이 함수는 np.apply_along_axis을 사용해 보았지만이 함수는 하나의 배열에 대해서만 설계되었습니다.

C = np.sqrt(A**2 + B**2) 

을 또는 당신은 comprehensionzip를 사용할 수 있습니다 : 댓글에서 언급 한 바와 같이

+3

왜 벡터화 된 ufuncs를 사용하지 않는가? np.sqrt (A ** 2 + B ** 2)? – Divakar

답변

2

당신이 사용할 수있는

C = [sqrt(a**2 + b**2) for a, b in zip(A,B)] 
1

당신의 배열의 크기가 큰 경우, np.square 대신 운영자 **의 사용을 고려하십시오.

In [16]: np.sqrt(np.square(A) + np.square(B)) 
Out[16]: 
array([ 8.24621125, 10.29563014, 10.  , 10.29563014, 
     8.24621125, 10.63014581, 7.07106781, 9.21954446]) 

실행 시간의 차이

비록 아주 최소한이다.

In [13]: ar = np.arange(100000) 

In [14]: %timeit np.square(ar) 
10000 loops, best of 3: 158 µs per loop 

In [15]: %timeit ar**2 
10000 loops, best of 3: 179 µs per loop