2017-05-11 20 views
0

是否有一些用於將均勻座標還原回2d座標的糖塊。有用的方法恢復均勻座標返回到2d?

所以這樣的:

[[4,8,2], 
6,3,2]] 

變成這樣:

[[2,4], 
[3,1.5]] 
+0

什麼是「同類座標」?有沒有*非含糖*的方式來實現它? – Divakar

+0

我可以把它與衆不同。我想用最後一個元素來分割數組的前兩個元素。輸出也應該是2個元素和3個元素作爲示例:) –

+0

@Divakar ... triple(xZ,yZ,Z)被稱爲一組齊次座標(維基百科).. Z是標量應該是對於所有點意義相同除以標量並分出額外維度(如果以上是數組,則爲((a/2)[:,:2])如果需要,則爲int) – NaN

回答

0

一種方法利用的broadcasted的elementwise部門 -

from __future__ import division 

a[:,:2]/a[:,[-1]] 

我們可以用a[:,-1,None]a[:,-1][:,None]a[:,-1].reshape(-1,1)到位的a[:,[-1]]。通過a[:,[-1]],我們保持了暗淡的數量,讓我們執行廣播部門。

另一個與np.true_divide再次使用broadcasting -

np.true_divide(a[:,:2], a[:,[-1]]) 

採樣運行 -

In [194]: a 
Out[194]: 
array([[4, 8, 2], 
     [6, 3, 2]]) 

In [195]: a[:,:2]/a[:,[-1]] 
Out[195]: 
array([[ 2. , 4. ], 
     [ 3. , 1.5]]) 

In [196]: np.true_divide(a[:,:2], a[:,[-1]]) 
Out[196]: 
array([[ 2. , 4. ], 
     [ 3. , 1.5]]) 
0

如果你有你輸入一個名爲x載體,你可以做

x[:-1]/x[-1] 

完整的示例:

import numpy as np 
x = np.array([6,3,2]) 
x[:-1]/x[-1] # array([ 3. , 1.5]) 

你也可以將它應用於多個座標的數組:

xs = np.array([[4,8,2],[6,3,2]]) 
np.array([x[:-1]/x[-1] for x in xs]) # array([[ 2. , 4. ], 
             #  [ 3. , 1.5]]) 

如果你想重用這個你可以定義一個函數homogen

homogen = lambda x: x[:-1]/x[-1] 

# previous stuff bevomes something like 
np.array([homogen(x) for x in xs]) 
+0

這隻適用於數組中的一個座標 –

+0

將其編輯爲包含多個座標的示例。 – xjcl