日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Python 數(shù)億次數(shù)值對對比,如何高效率處理?

來源: 責(zé)編: 時間:2024-06-05 17:43:28 148觀看
導(dǎo)讀python有列表a和b,結(jié)構(gòu)都如下所示:[[x1,y1,x2,y2]],x1,y1表示矩形的左下角坐標(biāo),x2,y2表示矩形右上角坐標(biāo),這樣的矩形有n多個(大數(shù)據(jù)量),遍歷a中每一個矩形,找出b中與其相交的矩形,輸出a中矩形index和b中相交矩形的index。如

python有列表a和b,結(jié)構(gòu)都如下所示:[[x1,y1,x2,y2]],x1,y1表示矩形的左下角坐標(biāo),x2,y2表示矩形右上角坐標(biāo),這樣的矩形有n多個(大數(shù)據(jù)量),遍歷a中每一個矩形,找出b中與其相交的矩形,輸出a中矩形index和b中相交矩形的index。Dlb28資訊網(wǎng)——每日最新資訊28at.com

Dlb28資訊網(wǎng)——每日最新資訊28at.com

如此大數(shù)據(jù)量的對比,可以使用numpy中的廣播和矩陣運(yùn)算來高效處理。Dlb28資訊網(wǎng)——每日最新資訊28at.com

Dlb28資訊網(wǎng)——每日最新資訊28at.com

首先,將a和b轉(zhuǎn)換為numpy數(shù)組,方便進(jìn)行矩陣運(yùn)算。假設(shè)a和b分別為:Dlb28資訊網(wǎng)——每日最新資訊28at.com

a = [[x1_1, y1_1, x2_1, y2_1], [x1_2, y1_2, x2_2, y2_2], ...]b = [[x1_1, y1_1, x2_1, y2_1], [x1_2, y1_2, x2_2, y2_2], ...]

則可以使用numpy數(shù)組的廣播功能,將a和b分別擴(kuò)展成形狀為(n,m,4)的數(shù)組,其中n和m分別為a和b的長度,4表示每個矩形有4個坐標(biāo)值。具體實(shí)現(xiàn)如下:Dlb28資訊網(wǎng)——每日最新資訊28at.com

import numpy as npa = np.array(a)b = np.array(b)a = np.expand_dims(a, axis=1)b = np.expand_dims(b, axis=0)a = np.tile(a, (1, len(b), 1))b = np.tile(b, (len(a), 1, 1))

這樣,a和b就可以進(jìn)行矩陣運(yùn)算了。接下來,可以使用numpy的邏輯運(yùn)算和索引功能,找出與每個a矩形相交的b矩形。具體實(shí)現(xiàn)如下:Dlb28資訊網(wǎng)——每日最新資訊28at.com

overlap = np.logical_and(    np.logical_and(a[:, :, 0] < b[:, :, 2], a[:, :, 2] > b[:, :, 0]),    np.logical_and(a[:, :, 1] < b[:, :, 3], a[:, :, 3] > b[:, :, 1]))result = np.argwhere(overlap)

其中,overlap表示a和b的每個矩形是否相交,result為相交的矩形對的索引。例如,result中的一行表示b中第i個矩形與a中第j個矩形相交。Dlb28資訊網(wǎng)——每日最新資訊28at.com

最后,可以將result中的索引轉(zhuǎn)換為b和a中的矩形索引,輸出即可。完整代碼如下:Dlb28資訊網(wǎng)——每日最新資訊28at.com

import numpy as npa = [    [4,6,7,7],    [3,3,4,4]]b = [    [9,3,10,4],    [3,2,5,4],    [4,6,8,7],    [3,3,7,7]]a = np.array(a)b = np.array(b)a = np.expand_dims(a, axis=1)b = np.expand_dims(b, axis=0)a = np.tile(a, (1, len(b), 1))b = np.tile(b, (len(a), 1, 1))overlap = np.logical_and(    np.logical_and(a[:, :, 0] < b[:, :, 2], a[:, :, 2] > b[:, :, 0]),    np.logical_and(a[:, :, 1] < b[:, :, 3], a[:, :, 3] > b[:, :, 1]))result = np.argwhere(overlap)for r in result:    a_index, b_index = r[0], r[1]    print("a index: {}, b index: {}".format(a_index, b_index))

本文鏈接:http://www.www897cc.com/showinfo-26-92128-0.htmlPython 數(shù)億次數(shù)值對對比,如何高效率處理?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 模擬實(shí)現(xiàn).NET中的Task機(jī)制:探索異步編程的奧秘

下一篇: 11道JavaScript 面試題

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 青海省| 榕江县| 常宁市| 徐闻县| 特克斯县| 深州市| 华容县| 资溪县| 沙田区| 丹凤县| 新兴县| 聂荣县| 河曲县| 靖远县| 紫云| 原阳县| 绥化市| 湖州市| 佛坪县| 新和县| 东宁县| 苗栗市| 门源| 达州市| 唐山市| 资阳市| 来安县| 江阴市| 遂宁市| 宁德市| 咸阳市| 珠海市| 雷波县| 奈曼旗| 庄河市| 大同县| 杨浦区| 沧州市| 砀山县| 凤山市| 临夏市|