我試圖創建一個包含發現指數在兩個條件得到滿足的經/緯度組合的陣列緯度/經度網格。這種方法可能太複雜,但使用meshgrid或numpy廣播也失敗了。如果有更好的方法,請隨時分享你的知識。 :-)列表以列表或多維名單列表的元素作爲網格
回合緯度/經度值gridsize的1°的分辨率,但是保留陣列的全長:
x = np.around(lon, decimals=0)
y = np.around(lat, decimals=0)
陣列由經度/緯度值的從-180到180和-82°到82°;可能的多douplets
檢查經/緯度多少度量可用於1°/ 1°網格點的每個組合:
a = arange(-180,181)
b = arange(-82,83)
totalgrid = [ [ 0 for i in range(len(b)) ] for j in range(len(a)) ]
for d1 in range(len(a)):
for d2 in range(len(b)):
totalgrid[d1][d2]=np.where((x==a[d1])&(y==b[d2]))[0]
此方法將失敗,並只返回一個空列表清單陣列。我無法弄清楚爲什麼它不能正常工作。
totalgrid[d1][d2]=np.where((x==a[0])&(y==b[0]))[0]
返回所有發現指數從經度/緯度的是存在於-180°/ -82°: 通過更換最後一行。不幸的是它需要一段時間。我在某處丟失了一個for循環嗎?!
更詳細的問題: @askewchan 不幸的是這一個沒有解決我原來的問題。如預期的那樣,結果很好地代表了地面軌道。除了我需要每個網格點的總點數的事實之外,我還需要緯度/經度數組中的每個單獨的緯度/經度組合索引用於進一步的計算。 假設我有一個數組
lat(100000L,), lon(100000L,) and a third one array(100000L,)
其對應於在每個點處測量。如果滿足條件,我需要經緯度的所有1°/ 1°組合的每個索引來檢查數組中的這個索引(100000L,)。現在讓我們假設lat/lon的指數[10000,10001,10002,...,10025]在同一個網格點上。對於那些索引,我需要檢查array [10000,10001,10002,..,10025]現在是否滿足條件,即np.where(array == 0)。用cts.nonzero()我只能得到直方圖中的索引。但是,那些對直方圖值有貢獻的每個點的所有信息都會丟失。希望你能得到我最初的問題。
因此,你似乎需要一個列表'a'的列表,其中'a [i]'是一個「lat」和「lon」的所有指數列表都屬於第i個「1」檔? – askewchan
不知道爲什麼我以前的文章現在工作。但它在每個lon/lat(d1/d2)點返回一個滿足條件的索引列表。但不幸的是,它需要幾分鐘。這是顯而易見的,因爲它通過緯度/經度迭代59040次。有更快的方法來獲得相同的結果嗎?我喜歡你的直方圖方法@askewchan,但不幸的是,我感興趣的所有信息都已丟失。 – nit