2011-10-18 37 views
3

我想將兩個數組的python/numpy索引與不同的大小關聯起來,但我無法通過子程序將索引從小數組傳遞給大數組。numpy中的數組賦值:冒號相當於

例如,我有兩個numpy陣列:a1a2a1.shape = (240,33,258)a2.shape = (240,40,33,258)。我在a1中找到索引,並將這些索引與a2相關聯。即,index1 = numpy.where(a > n)。我可以抓取數據,我的興趣使用

dat1 = a1[index] 
dat2 = a2[index[0],:,index[1],index[2]] 

用所得的DAT形狀,dat1.shape = (n)dat2.shape = (n, 40)。爲了加速程序,我想通過子程序傳遞索引,但是我不能通過子程序[index[0],:,index[1],index[2]],因爲我不能傳遞冒號':'。

我相信我的解決方案是在子程序中傳遞相當於':'的數字,但是我還沒有找到答案。

任何幫助?

非常感謝您

回答

4

你應該能夠使用slice(None)代表:。作爲

[index[0], slice(None), index[1], index[2]] 
+0

謝謝,這正是我所需要的。 – NPB

2

至於說,:slice(None)簡寫。您也可以使用np.s_[index[0],:,index[1],index[2]]作爲創建切片元組的便利語法。

+0

非常感謝! – NPB