Numpy 配列に回転対称値をすばやく入力する方法を見つけようとしています。円錐形の領域を含むゼロの配列を想像してください。値の 1D 配列があり、配列の中心を中心に 360° 回転させたいと考えています。z=f(x,y) のような 2D 関数がないため、2D 値を明示的に計算できません。動作するものがありますが、for ループは大きな配列には遅すぎます。これは円を作るはずです:
values = np.ones(100)
x = np.arange(values.size)-values.size/2+0.5
y = values.size/2-0.5-np.arange(values.size)
x,y = np.meshgrid(x,y)
grid = np.rint(np.sqrt(x**2+y**2))
arr = np.zeros_like(grid)
for i in np.arange(values.size/2):
arr[grid==i] = values[i+values.size/2]
もちろん、私の 1D 配列はそれほど単純ではありません。誰かが for ループを取り除く方法を考えられますか?
更新: 畳み込みぼかし用の円形フィルターを作成したいと考えています。使用する前はnp.outer(values,values)
、長方形のフィルターがありました。David のヒントにより、循環フィルターを非常に高速に作成できます。下記参照: