3
このような操作のために2番目のfor
ループを使用しないようにする方法はありますか?ナンシーインデックスを避けるforループ
for x in range(Size_1):
for y in range(Size_2):
k[x,y] = np.sqrt(x+y) - y
これを最適化する方法はありますか?今は大きなサイズでは非常に遅いです。ここで
このような操作のために2番目のfor
ループを使用しないようにする方法はありますか?ナンシーインデックスを避けるforループ
for x in range(Size_1):
for y in range(Size_2):
k[x,y] = np.sqrt(x+y) - y
これを最適化する方法はありますか?今は大きなサイズでは非常に遅いです。ここで
はbroadcasting
とベクトル化されたソリューションです -
X,Y = np.ogrid[:Size_1,:Size_2]
k_out = np.sqrt(X+Y) - Y
補完Divakarのソリューション:Y
とX
が新しい範囲が、数字のいくつかの既存のベクトルでない場合は、np.ix_
を使用します。
Y, X = np.array([[1.3, 3.5, 2], [2.0, -1, 1]])
Y, X = np.ix_(Y, X) # does the same as Y = Y[:, None]; X = X[None, :]
out = np.sqrt(Y+X) - X
の可能性のある重複[ numpyネストされたループをスピードアップ](http://stackoverflow.com/questions/23565573/speed-up-numpy-nested-loop) – pinkfloydx33