私は、具体的Fortranの同等
separation[a, :] = sum(np.minimum(1 - distances, distances) ** 2)
ラインが重要な部分は、エレメントを取るためにnp.minimumの使用され、Fortranで再書き込みいくつかのPythonコードにしようとしています少なくとも2つの多次元配列を含む。距離はN座標(x、y、z)の(3、N)配列です。私は、Fortranで同様の機能を見つけることができないので、私は使って自分の書いた:
do b = 1, N
temp = 0.0
do c = 1, 3
if ((1 - distances(c, b)) .LE. distances(c, b)) then
temp = temp + (1 - distances(c, b)) ** 2
else
temp = temp + (distances(c, b)) ** 2
end if
end do
separation(a, b) = temp
end do
当然のことながら、このコードは非常に遅いですが、私はFortranで非常に経験豊富ではないよ、まだこのコードを改善したり示唆するように推奨事項代わりの方法が大いに評価されるであろう。
Pythonで次のコードは、
separation[a, :] = sum(np.where(1 - distances <= distances, (1 - distances), distances) ** 2)
を作品としてではなく、文は、彼らはものをPythonのためにかなり異なる動作をすると、彼らはしていないように見えるところFortranが持っている間、私は、おそらくどこ文が役立つかもしれないと思いましたここで多用してください。
ありがとうございます!それはそれほど簡単ではないと信じられない。 –