2014-03-03 41 views
1

當我開始學習numpy時,我感到很驚訝,那裏有N維數組。我是一名程序員,我認爲沒有人使用超過二維數組。其實我甚至無法超越二維數組。我不知道如何思考3D,4D,5D陣列或更多。我不知道在哪裏使用它們。N-D陣列使用示例

您能否給我舉例說明3D,4D,5D ...等陣列在哪裏使用?如果一個人使用numpy.sum(array, axis=5) 5D陣列會發生什麼?

回答

0

實際應用很難想出,但我可以給你一個簡單的3D例子。

想象一下,將3D世界(例如遊戲或模擬)分成相同大小的立方體。每個立方體都可以包含某種特定的值(一個很好的例子就是氣候建模的溫度)。矩陣然後可以用於進一步的操作(簡單的計算它的移調,它的行列式等)。

我最近有一個任務,涉及在二維空間建模流體動力學。我可以很容易地將它擴展到3D工作,這需要我使用3D矩陣。

您可能還希望進一步擴展矩陣來迎合時間,這將使他們成爲4D。最後,它真的歸結爲你正在處理的具體問題。

然而,作爲結束註釋,2D矩陣仍然用於3D圖形(您使用4x4增廣矩陣)。

0

例如,3D陣列可用於表示電影,即隨時間變化的2D圖像。 對於給定的時間,前兩個軸將給出圖像中像素的座標,相應的值將給出該像素的顏色或灰度級。第三軸代表時間。對於每個時間段,您都有完整的圖像。

在這個例子中,numpy.sum(數組,軸= 2)將在給定像素中集成曝光。如果你想到在低光照條件下拍攝的電影,你可以考慮做一些這樣的事情,以便能夠看到任何東西。

1

幾個簡單的例子是:

  • 的表示爲三維n x m x p矩陣p - 載體,甲n x m 2D陣列,正如從計算圖像的梯度值的
  • 一種3D網格可能導致,如體積紋理
  • 這些可以即使在這種情況下,你得到一個4D矩陣
  • 與圖形範例住卷的梯度的情況下被組合,添加時間增加了一個額外夢詩離子,所以隨時間變化的3D梯度紋理將5D

numpy.sum(array, axis=5)不適用於一個5D-陣列(如軸從0開始)

0

有這樣的例子很多...的你試圖表示它的方式可能是錯誤的,我們舉一個簡單的例子:

  • 你有盒子和盒子存儲N項。您最多可以在每個框中存儲100個項目。
  • 您已將貨架組織在貨架上。貨架允許您存儲M個箱子。您可以通過索引識別每個框。
  • 所有的貨架都在3層倉庫。因此,您可以使用3個數字識別任何貨架:行,列和地板。

然後通過:行,列,樓層和貨架上的索引來標識一個框。

一個項目標識爲:行,列,層,索引在貨架上,索引在框中。

基本上,一種方法(不是最好的......)來模擬這個問題將是使用5D陣列。

0

它們非常適用於科學計算。現在,例如,我正在模擬輸出4D數組中的數據:具體爲

|時間| x位置| y-position | z位置|。

幾乎每個現代的空間模擬都將使用多維陣列,以及計算機遊戲的編程。