第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中將一個矩形劃分為NxM矩形并對其進行編號

在Python中將一個矩形劃分為NxM矩形并對其進行編號

慕田峪4524236 2023-07-27 09:59:44
所以我有一個大小為 104x68 的矩形,并將該矩形分成 36 個相等的部分。圖像中的數(shù)字代表每個小矩形的坐標位置?,F(xiàn)在我想對每個矩形進行編號,如下圖所示:IEFor coordinate location x = [0, 17.3] and y = [0, 11.3] will be number 1 boxFor coordinate location x = (17.3, 34.6] and y = [0, 11.3] will be number 2 box....For coordinate location x = (86.6, 104] and y = (56.6, 68] will be number 36 box對每個框進行編號后,我希望:給定一個值(54,35),程序?qū)⑸稍撎囟ㄖ档目蚓幪?,對于給定值(54, 35),框編號將為 22。在Python中解決這個問題的優(yōu)化方法是什么?有人可以幫忙嗎?
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

下面,您可以通過輸入所需的參數(shù)來獲取矩形編號。weight并height顯示矩形的尺寸(在您的示例中為width = 104, height = 68)。xpartition和ypartition參數(shù)顯示每個維度的劃分數(shù)(在您的示例中,36 等分意味著xpartition = 6, ypartition = 6)。xinput和yinput是查詢點的尺寸,需要知道其在指定分區(qū)中的矩形數(shù)(在您的示例中為xinput = 54, yinput = 35)。


import math

def get_rect_num(width, height, xpartition, ypartition, xinput, yinput):

    x_step = width / xpartition

    y_step = height / ypartition

    x = math.ceil((xinput if xinput > 0 else 0.5) / x_step) # handle border cases as well

    y = math.ceil((yinput if yinput > 0 else 0.5) / y_step)  # handle border cases as well

    return (y-1) * xpartition + x


get_rect_num(104, 68, 6, 6, 54, 35)


#> 22

上述計算的時間復(fù)雜度基于Theta(1)四個主要操作。


查看完整回答
反對 回復(fù) 2023-07-27
?
慕碼人8056858

TA貢獻1803條經(jīng)驗 獲得超6個贊

不是最優(yōu)化的方法(您可以使用itertools),但一種相當(dāng)緊湊的方法就是使用numpy.arange。假設(shè)這是您的實際任務(wù),我不明白為什么該方法需要比這更優(yōu)化。


import numpy as np 

SMALL_NUM = 1e-5 

def range_pairs(max_value, divisions): 

    division_length = max_value/divisions 

    range_values = list(np.arange(0, max_value+SMALL_NUM, division_length)) 

    return [(range_values[i], range_values[i+1]) for i in range(divisions)] 

 

i = 0 

for y in range_pairs(68, 6): 

    for x in range_pairs(104, 6): 

        i += 1 

        print(f"For coordinate location x = {x} and y = {y} will be number {i} box")

對于較大的任務(wù),請考慮itertools,并考慮預(yù)先計算range_pairs以下內(nèi)容,或lru_cache在函數(shù)上添加一個range_pairs。


查看完整回答
反對 回復(fù) 2023-07-27
  • 2 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號