私は、それぞれ緯度と経度のポイントセットの2つの入力numpy配列を持っています:lats
とlons
です。Numpy:2つのnumpy配列に関数を適用し、2つのnumpy配列を返します。
私は(E,N)
ペアにそれぞれ(lat,lon)
ペアを変換する関数を継承しています
def convert(lat,lon): #takes two floats as arguments (unit: degrees)
...
computation #Actual function is too long to post
...
return N,E #returns two floats (unit: meters)
私の質問:はどのように私は効率的に両方の入力numpyのアレイに同時に同じ機能を適用することができますか?
私はそれがリストを返すように機能を変更することを考えていた:
return [N,E]
ように:私はまだこれをテストしたが、それを見ていない
rows = int(lat.shape[0]) #lat and lon have the same shape
cols = int(lat.shape[1])
easting=numpy.zeros(shape=(rows,cols))
northing=numpy.zeros(shape=(rows,cols))
for i in range(0, rows):
for j in range(0, cols):
northing=convert(lon[i][j])[0] #first element of the returned list
easting=convert(lat[i][j])[1] #second element of the returned list
私はこれがうまくいくのは非常に快適ではないと感じています。どんな洞察も高く評価されます。
にこれは 'convert'機能の詳細に依存しますと、それは、配列放送を適用します。あなたが望むように文字通りすでに動作しているかもしれませんし、 'math.sin'のようなものを' np.sin'に切り替える必要があるかもしれません。あるいは、コードができるAPIに依存していれば、一度に1組の要素を取るかどうかを制御したり置き換えたりしないでください。 – user2357112