簡體   English   中英

如何有效地將轉換應用於多通道numpy ndarray?

[英]How do I efficiently apply a transform to a multi-channel numpy ndarray?

我有三個數據通道。 通道代表x,y和z坐標。 例如,某點的x位置存儲在通道1中,y位置存儲在通道2中,等等。

我想對這些通道中表示的每個點執行轉換。 也就是說,我想將每個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

也許您的數據的維數高於此“ 3個通道的M數據點”示例? 目前尚不清楚uv含義,但它們暗示您的問題可能是高維的。 如果是這樣,您可以研究numpy.tensordotnumpy.einsum ,它們可以將矩陣乘法推廣到更高的維度,也可以將raw設置為實際原始數據的view ,然后將其reshape為M-by-3(和最后通過重塑transformed為所需的方式來撤消該操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM