我有一个三维纽比阵列,并想采取平均超过一个轴考虑某些元素从其他两个维度。在
以下是描述我的问题的示例代码:
import numpy as np
myarray = np.random.random((5,10,30))
yy = [1,2,3,4]
xx = [20,21,22,23,24,25,26,27,28,29]
mymean = [ np.mean(myarray[t,yy,xx]) for t in np.arange(5) ]
但是,这会导致:
^{pr2}$为什么像myarray[:,[1,2,3,4],[1,2,3,4],[1,2,3,4]]这样的索引可以工作,但上面的代码不行?在
这就是您对索引在多个维度上的喜好:
当您使用花哨的索引(即列表或数组作为索引)时,numpy将这些数组广播到一个公共形状,并使用它们来索引数组。您需要在第一个索引数组的末尾添加长度为1的额外维度,以便广播正常工作。Here are the rules of the game。在
为了回答您关于它为什么不起作用的问题:当您使用列表/数组作为索引时,Numpy使用的索引语义与使用切片时不同。您可以在the documentation中看到完整的故事,正如该页所说,它“可能有点令人难以置信”。在
如果您想对不连续的元素执行此操作,则必须探索复杂的索引机制。在
由于使用连续元素,因此可以使用切片:
相关问题 更多 >
编程相关推荐