2011-09-12 107 views
0

我正在使用numpy,我想將計算結果存儲在三個四維矩陣內。我想要做這樣的事情:具有不同數量的維度的索引numpy數組

result[:, indices, iteration] = some_function() # won't work 

,其中尺寸從indices元組的長度的理解。所以,如果indices等於,比方說,(6,)(8, 5)然後我希望有

result[:, 6, iteration] = some_function() 

result[:, 8, 5, iteration] = some_function() 

相當於一般情況下我把所有的座標到一個數組和使用,作爲一個索引,但:的存在阻止我這樣做。

result的尺寸已經更早地設置爲正確的尺寸,因此可以檢查它,但是隻使用indices的長度來確定尺寸會很好。有什麼辦法可以做到這一點?

回答

2

嘗試使用result[(slice(None),) + indices + (iteration,)]

+0

是的,它工作正常。謝謝! –

1

如果您需要了解指數的長度:

len(indices) 

但它是這個你的問題?

+0

不,我知道可以檢查長度。如果它是1,我可以得到結果[:, indices [0],iteration] = ...,或者如果它是2,result [:, indices [0],indices [1],iteration] = ...但是我認爲如果我可以在我的問題中採用類似於第一行的方式,而不是使用if語句來計算長度,會更好。 –

+0

我想,即使你沒有明確寫出,也總會有「如果」。 – Louis

+0

沒關係,只要我不必明確寫出。這樣我可以輕鬆地添加更多維度,而無需添加更多條件進行檢查。 (即使我已經知道我不會再添加任何尺寸) –