我发现了一个与我非常相似的问题,但并不完全相同。 但是在ntimes的情况下,数组的大小与元组所指向的维数匹配。就我而言,我有一个4维数组和2维元组,就像这样:
from numpy.random import rand big_array=rand(3,3,4,5) tup=(2,2)
我想使用元组作为前两个维度的索引,并手动索引后两个维度。就像是:
big_array[tup,3,2]
但是,我沿着第四个维度获得了索引为2的第一个维度的重复(因为从技术上来说还没有被索引)。这是因为此索引将解释对第一个维度的双索引,而不是每个维度的一个值,
eg. | dim 0:(index 2 AND index 2) , dim 1:(index 3), dim 2:(index 2), dim 3:(no index)| instead of |dim 0(index 2), dim 1(index 2), dim 2:(index 3), dim 3:(index 2)|.
那我怎样才能“拆开”这个元组?有任何想法吗?谢谢!
您也可以单独传入第一个元组以获取感兴趣的片段,然后分别对其进行索引:
from numpy.random import rand big_array=rand(3,3,4,5) chosen_slice = (2,2) >>> big_array[ chosen_slice ] array([[ 0.96281602, 0.38296561, 0.59362615, 0.74032818, 0.88169483], [ 0.54893771, 0.33640089, 0.53352849, 0.75534718, 0.38815883], [ 0.85247424, 0.9441886 , 0.74682007, 0.87371017, 0.68644639], [ 0.52858188, 0.74717948, 0.76120181, 0.08314177, 0.99557654]]) >>> chosen_part = (1,1) >>> big_array[ chosen_slice ][ chosen_part ] 0.33640088565877657
对于某些用户来说,这可能更容易理解,但否则,我倾向于使用mgilson的解决方案。