我试图将两个不同大小的数组的python / numpy索引联系起来,但我不能通过子程序将索引1从小数组传递到大数组。
例如,我有两个numpy数组:a1
和a2
。 a1.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]]
将结果数据形状设为dat1.shape = (n)
和dat2.shape = (n, 40)
。为了加速程序,我想通过一个子程序传递索引,但我无法通过子程序传递[index[0],:,index[1],index[2]]
,因为我无法传递冒号':'。
我相信我的解决办法是在子程序中将数字等价物传递给':',但我没有找到答案。
任何帮助?
非常感谢
答案 0 :(得分:6)
您应该可以使用slice(None)
来代表:
。如在
[index[0], slice(None), index[1], index[2]]
答案 1 :(得分:2)
如上所述,:
是slice(None)
的简写。您还可以使用np.s_[index[0],:,index[1],index[2]]
作为构造切片元组的便捷语法。