2017-04-19 4 views
0

Iはn個の要素は、次の2 numpyの配列を有する:Iは、配列Cを得たい2つの異なる配列の要素ごとの計算から配列を返す方法は?

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

を:

C = np.array([sqrt(2^2+8^2) sqrt(5^2+9^2) ... sqrt(6^2+7^2)]) 

、Cは、n個の要素から成るであろう配列であること。各要素はAの各要素の二乗の平方根にBの各要素の二乗を足したものに等しくなります。

私はnp.apply_along_axisを使ってみましたが、この関数は1つの配列に対してのみ設計されているようです。あなたが使用することができますコメントで述べたように

+3

ベクトル化されたufuncを使用しないのはなぜですか? 'np.sqrt(A ** 2 + B ** 2)'? – Divakar

答えて

2

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

それとも、comprehensionzipを使用することができます。

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 
関連する問題