0
我有三個數據通道。通道表示x,y和z座標。例如,對於一個點的x位置被存儲在信道1,信道2等如何有效地應用轉變爲多渠道numpy的ndarray?
y位置我想執行這些頻道中表示的每個點的變換。也就是說,我想用變換矩陣在每個u,v位置乘以x,y和z。當然,我可以手動迭代每個u,v位置並提取位置數據。我覺得這不是最有效的方法。
我的問題是,轉換點集合的最有效方法是什麼?在哪裏位置數據存儲在對應於每個維度的通道中?
我有三個數據通道。通道表示x,y和z座標。例如,對於一個點的x位置被存儲在信道1,信道2等如何有效地應用轉變爲多渠道numpy的ndarray?
y位置我想執行這些頻道中表示的每個點的變換。也就是說,我想用變換矩陣在每個u,v位置乘以x,y和z。當然,我可以手動迭代每個u,v位置並提取位置數據。我覺得這不是最有效的方法。
我的問題是,轉換點集合的最有效方法是什麼?在哪裏位置數據存儲在對應於每個維度的通道中?
你描述的是一個簡單的矩陣乘法:
raw = numpy.array([ [1, 10, 100], [2, 20, 200], [3, 30, 300], [4, 40, 400] ])
transformation = numpy.matrix([ [1, 0, 0], [0, 0, 1], [0, -1, 0] ])
transformed = raw * transformation
也許你的數據比這個M-數據點按-3-「通道」例如高維?目前還不清楚你的意思是u
和v
,但他們提出的問題可能會更高維。如果是這樣,你可以調查numpy.tensordot
和numpy.einsum
,這允許將矩陣乘法推廣到更高維度,或者可以將raw
設置爲view
,然後將reshape
降至M-3(然後撤消通過重塑transformed
回你想要的方式)結束。
嘲笑了一些數據。這是一個平坦的記錄陣列嗎? M-通過-N×3? –