2010-02-23 49 views
3

對,也許我應該使用普通的Python列出了這一點,但這裏有雲:簡單的問題:在numpy中,如何製作一個多維數組數組?

我希望有一個9×4多維數組/矩陣(不管真的),我想存儲陣列,這些陣列會。 1維的長度和4096

所以,我希望能夠去像

column = 0         #column to insert into 
row = 7          #row to insert into 
storageMatrix[column,row][0] = NEW_VALUE 
storageMatrix[column,row][4092] = NEW_VALUE_2 
etc.. 

我明白我可以在這裏做的東西有點傻/不必要的,但它會使它了很多在我的代碼中更容易讓它像這樣構造(因爲這些很多,而且需要做很多分析更高版本)。

謝謝!

回答

8

注意利用numpy的的全功率,用三維numpy數組你會更好。將三維數組拆分爲一個1-d值的二維數組 可能會使代碼複雜化並迫使您使用循環而不是內置的numpy函數。

您可能需要投入時間重構代碼以使用高級3-D numpy陣列。

但是,如果這不是一個選項,然後:

import numpy as np 
storageMatrix=np.empty((4,9),dtype='object') 

通過設置dtype'object',我們告訴numpy的允許的storageMatrix每個元素可以是任意的Python對象。

現在你必須初始化numpy的數組的每個元素是一個1-d numpy的數組:

storageMatrix[column,row]=np.arange(4096) 

然後可以訪問這樣的數組元素:

storageMatrix[column,row][0] = 1 
storageMatrix[column,row][4092] = 2 
+0

真棒,這很完美 - 事實上我會重構我的代碼使用3D數組,這是有道理的。 – 2010-02-23 15:04:21

0

Tentative NumPy Tutorial說,你可以使用逗號運算符聲明一個二維數組:

x = ones((3,4)) 

和索引到一個二維數組是這樣的:

>>> x[1,2] = 20 
>>> x[1,:]        # x's second row 
array([ 1, 1, 20, 1]) 
>>> x[0] = a       # change first row of x 
>>> x 
array([[10, 20, -7, -3], 
     [ 1, 1, 20, 1], 
     [ 1, 1, 1, 1]]) 
+0

確定你」第一部分有正確的想法:我可能沒有正確解釋自己。所以設置這些((3,4))是正確的...現在想象爲數組中的每個1我想有一個數組(爲了參數,[1,2,3])...我會怎麼做? – 2010-02-23 14:20:26

+0

我想我可以製作一個三維數組,但這很令人困惑。 – 2010-02-23 14:23:11

+0

現在不需要cos了,我需要一個4-d一個,那是一個恥辱cos第4個維度影響其他3個,我只希望它影響第3個維度:( – 2010-02-23 14:51:36

相關問題