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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將2D查找表映射到數(shù)組(python)?

如何將2D查找表映射到數(shù)組(python)?

慕少森 2022-08-02 18:41:11
我有三個(gè)相同形狀的2D陣列,讓我們稱(chēng)它們?yōu)棣?,phi和A。設(shè)θ和phi是與從表面上不同距離看到的法向量的角度:size = 100 # this value is fixedx = np.arange(-size, size)y = np.arange(-size, size)xx, yy = np.meshgrid(xx, yy)theta = np.arctan((xx**2+yy**2)**0.5 / 100) # angle from distance 100phi = np.arctan((xx**2+yy**2)**0.5 / 1000) # angle from distance 1000設(shè) A 是測(cè)量值的 2D 映射,其中 x 軸是 θ,y 軸是 phi,在已知和線性步長(zhǎng)中(實(shí)際上與 θ 和 phi 的形狀不同)。我需要的是用A(x,y)表示的A(theta,phi)的值。似乎我不知道如何將A(theta,phi)轉(zhuǎn)換為A(x,y),即使我知道theta(x,y)和phi(x,y)。我嘗試了什么: 通過(guò) scipy.interpolate.interp2d,我可以將 A 映射到與 theta 和 phi 相同數(shù)量的行和列?,F(xiàn)在,我可以迭代索引并猜測(cè)/舍入數(shù)組中最匹配的索引B = np.zeros(A.shape)for i in range(0,A.shape[0]):  for j in range(0,A.shape[1]):    B[i,j] = A[int(f_theta*theta[i,j]),int(f_phi*phi[i,j])]其中f_theta和f_phi是由索引步長(zhǎng)測(cè)量的步長(zhǎng)確定的前因數(shù)。這對(duì)我來(lái)說(shuō)看起來(lái)非常糟糕和低效的編碼,就像我實(shí)際想要做的事情的粗略近似(這是反向插值映射?)。這讓我想起了查找表,坐標(biāo)轉(zhuǎn)換和插值,但是由于沒(méi)有這些關(guān)鍵字,我找到了合適的方法來(lái)解決問(wèn)題。我的python經(jīng)驗(yàn)大聲疾呼,將有一個(gè)模塊/函數(shù),我不知道。編輯限制:A(theta,phi)中的軸的范圍大于θ(x,y)和phi(x,y)的范圍,使得映射值始終存在。我不需要將B映射回A,因此不存在缺失值的問(wèn)題。映射 A(theta,phi)中的許多值永遠(yuǎn)不會(huì)被使用。關(guān)于清晰度的編輯:我將給出一個(gè)帶有小矩陣的示例,希望澄清一些事情:# phi given in degreesphi = np.array([    [2,1,2],    [1,0,1],    [2,1,2],])# theta given in degreestheta = np.array([    [6,4,6],    [4,0,5],    [6,5,6],])# A[0,0] is the value at phi=0deg, theta=0deg# A[0,1] is the value at phi=1deg, theta=0deg# A[1,1] is the value at phi=1deg, theta=1deg etc# this is a toy example, the actual A cannot be constructed by a simple ruleA = np.array([    [0.0,0.1,0.2],    [1.0,1.1,1.2],    [2.0,2.1,2.2],    [3.0,3.1,3.2],    [4.0,4.1,4.2],    [5.0,5.1,5.2],    [6.0,6.1,6.2],])# what I want to reach:B = [[6.2,4.1,6.2],     [4.1,0.0,5.1],     [6.2,5.1,6.2]]我需要澄清的是,我在這里做了一些簡(jiǎn)化:1)對(duì)于給定的θ,我可以通過(guò)查看表格來(lái)檢查相應(yīng)的phi:theta[i,j]對(duì)應(yīng)于phi[i,j]。但是這個(gè)例子的構(gòu)造太簡(jiǎn)單了,它們不共享相同的來(lái)源,它是嘈雜的數(shù)據(jù),因此我無(wú)法給出解析表達(dá)式theta(phi)或phi(theta)2)我的實(shí)際θ和phi中的值是浮點(diǎn)數(shù),我的實(shí)際A也以非整數(shù)步長(zhǎng)測(cè)量(例如,在θ方向上每步0.45度,在phi方向上每步0.2度)3)原則上,由于θ和phi之間存在嚴(yán)格的關(guān)系,我只需要值A(chǔ)的特定1D“跡線”來(lái)找到B,但我不知道如何找到這個(gè)跡線,也不知道如何創(chuàng)建B出來(lái)的跡線。示例中的此跡線為 [A[0,0],A[4,1],A[5,1],A[6,2]] = [0.0,4.1,5.1,6.2]
查看完整描述

1 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

例如,您可以執(zhí)行雙線性插值:


from scipy.interpolate import interpn


delta = [1.0, 1.0] # theta, phi

points = [np.arange(s)*d for s, d in zip(A.shape, delta)]

xi = np.stack((theta, phi), axis = -1)

B = interpn(points, A, xi)

這給出了:


print(B)

[[6.2 4.1 6.2]

 [4.1 0.  5.1]

 [6.2 5.1 6.2]]


查看完整回答
反對(duì) 回復(fù) 2022-08-02
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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