2011-10-18 40 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