@[TOC](python 對(duì)一組list數(shù)據(jù)衙四,進(jìn)行區(qū)間劃分,按照大小排序并返回索引值:)
一患亿、對(duì)一組緯度數(shù)據(jù)進(jìn)行排序:
現(xiàn)有4000多個(gè)緯度數(shù)據(jù)传蹈,從第0個(gè)至最后一個(gè)從-90°~90°隨機(jī)分布押逼。
想要實(shí)現(xiàn)從-90°依次從到小排至90°,既升序排列惦界,同時(shí)返回其下標(biāo)
這里引用兩個(gè)函數(shù)sorted 挑格、enumerate
第一個(gè)函數(shù):sorted 用法說(shuō)明如下
list = sorted(iterable, key=None, reverse=False)
如果只想實(shí)現(xiàn)升序排列,直接進(jìn)行如下操作即可
lat_sort=sorted(lat)
得到:
但是我們想同時(shí)返回其在原來(lái)列表中的下標(biāo)沾歪,既需要enumerate函數(shù)的幫忙
其使用方法如下:
enumerate(iterable, start=0)
Parameters:
Iterable: any object that supports iteration
Start: the index value from which the counter is
to be started, by default it is 0
我們先對(duì)lat數(shù)據(jù)直接進(jìn)行使用看看返回了什么:
a=enumerate[lat]
發(fā)現(xiàn)無(wú)法查看其具體結(jié)果漂彤,所以再將其轉(zhuǎn)換為list格式,以便瀏覽
a=list(enumerate(lat))
很明顯灾搏,上述操作挫望,將每個(gè)原始lat中數(shù)據(jù)的值及其下標(biāo)返回了,因此再次進(jìn)行sorted排序是即可查看它對(duì)應(yīng)的下標(biāo)啦~
但是?褚ぁJ恐琛!蕾域,因?yàn)榇藭r(shí)list中既有下標(biāo)拷肌、又有數(shù)值,在進(jìn)行排序時(shí)是按照下標(biāo)還是數(shù)值呢旨巷,所以需要增加一個(gè)維度設(shè)定巨缘,既
對(duì)于sorted(iterable, ****key=None****, reverse=False)中的key進(jìn)行設(shè)定,使其按照所需緯度進(jìn)行排序采呐。
這里我需要的是根據(jù)數(shù)值排序若锁,所以進(jìn)行如下操作:
a=sorted(list(enumerate(lat)),key=lambda dimension: dimension[1])
。斧吐。又固。。煤率。仰冠。。蝶糯。洋只。。昼捍。识虚。。妒茬。担锤。。乍钻。肛循。蛛株。。育拨。谨履。。熬丧。笋粟。。析蝴。害捕。。
補(bǔ)充一下:
lambda 函數(shù)是一種小的匿名函數(shù)闷畸,可接受任意數(shù)量的參數(shù)尝盼,但只能有一個(gè)表達(dá)式。
比如:對(duì)于想要傳入的參數(shù)使其加上6佑菩,即可設(shè)置為:
x= lambda a : a + 10
盾沫。。殿漠。赴精。。绞幌。蕾哟。。莲蜘。谭确。。票渠。逐哈。。庄新。鞠眉。。择诈。。出皇。羞芍。。郊艘。荷科。唯咬。。畏浆。胆胰。。
回到正題
我們運(yùn)行上述代碼會(huì)得到:
果然?袒瘛J裾恰!不出所料按照我們想要的結(jié)果實(shí)現(xiàn)啦~
下面蝎毡,是提取對(duì)應(yīng)的維度結(jié)果厚柳,比如我們想要將下標(biāo)和數(shù)值分別放置在一個(gè)list中,只要這樣即可:
index = [i[0] for i in a]
lat_sort = [i[1] for i in a]
不出所料沐兵,是不是很easy吶别垮!
如果想要按照原始lat中,不同數(shù)值按照不同顏色排列扎谎,只需將list轉(zhuǎn)為array即可
lat_sort=np.array(lat_sort)
二碳想、將lat數(shù)據(jù)按照10為區(qū)間進(jìn)行排序并統(tǒng)計(jì)每個(gè)區(qū)間存在的個(gè)數(shù):
首先整理一下思路,我們要進(jìn)行排序毁靶,然后區(qū)間進(jìn)行分割移袍。
這里引出一個(gè)新的函數(shù):groupby(),其參數(shù)屬性如下所示:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=<object object>, observed=False, dropna=True)
感興趣的小伙伴們可以去點(diǎn)擊下方中進(jìn)行仔細(xì)瀏覽:
總之老充,我們可以通過(guò)groupby葡盗,達(dá)到分割數(shù)據(jù)的目的,
進(jìn)行如下操作:
lat_sort=[]
for k, g in groupby(sorted(lat), key=lambda x:x//10):
#x//10:對(duì)x取整除 - 返回商的整數(shù)部分
print('{}-{}:{}'.format(k*10, (k+1)*10-1,len(list(g))))
完美7茸恰C俟弧!
引用:https://blog.csdn.net/weixin_44237337/article/details/116139690?spm=1001.2014.3001.5502