numpy中的数组赋值 / : 冒号等价物
我正在尝试将两个大小不同的数组在Python/Numpy中进行索引关联,但我无法通过一个子程序将小数组的索引传递给大数组。
举个例子,我有两个Numpy数组:a1
和 a2
。a1.shape = (240,33,258)
,而a2.shape = (240,40,33,258)
。我在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]]
,因为我不能传递冒号':'。
我认为我的解决方案是将冒号':'的数字等价物传递给子程序,但我还没有找到答案。
非常感谢你的帮助。
2 个回答
2
如上所述,:
是 slice(None)
的简写。你也可以使用 np.s_[index[0],:,index[1],index[2]]
这种方便的写法来构建切片元组。
7
你可以用 slice(None)
来表示 :
的意思。就像下面这样:
[index[0], slice(None), index[1], index[2]]