2017-01-29 19 views
1

から一つずつIはAから、それぞれの行、一枚ずつ減算し、アレイ内の行方向の絶対和を格納します。減算列Iは、2D numpyのアレイ、A.</p> <p>を有するnumpyのアレイ

forループを使用せずに操作を実行する方法はありますか?以下はforループのコードです。

import numpy as np 
A = np.random.randint(5,size=(8,9)) 
b = np.zeros(A.shape[1]); 
for i in xrange(A.shape[0]): 
    b = b + np.sum(np.absolute(A - A[i,:]), axis=0) 

答えて

1

あなたはbroadcasting使用することができます -

(np.abs(A[:,None,:] - A)).sum(axis=(0,1)) 

ステップ:

(1)最後の軸がAの2つのバージョンを取得整列状態に保つ:

Input1 (A[:,None,:]) : M x 1 x N 
Input2 (A)    :  M x N 

取得赦免の違いこれら2つの入力の間には3Dの配列が生成されます。

(2)最終出力の最初の2つの軸に沿って合計します。

関連する問題