numpy中的数组赋值 / : 冒号等价物

5 投票
2 回答
2225 浏览
提问于 2025-04-17 04:34

我正在尝试将两个大小不同的数组在Python/Numpy中进行索引关联,但我无法通过一个子程序将小数组的索引传递给大数组。

举个例子,我有两个Numpy数组:a1a2a1.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]]

撰写回答