我希望有人能向我解释以下行为我与numpy的阵列观察:与numpy的阵列质朴的行为
>>> import numpy as np
>>> data_block=np.zeros((26,480,1000))
>>> indices=np.arange(1000)
>>> indices.shape
(1000,)
>>> data_block[0,:,:].shape
(480, 1000) #fine and dandy
>>> data_block[0,:,indices].shape
(1000, 480) #what happened???? why the transpose????
>>> ind_slice=np.arange(300) # this is more what I really want.
>>> data_block[0,:,ind_slice].shape
(300, 480) # transpose again! arghhh!
我不明白这一点变调行为,这是我想要的东西非常不方便做。任何人都可以向我解释吗?获得data_block
的子集的另一种方法将是一个很大的好处。
实际的规则很简单。如果花哨的指数(和标量也是这方面的幻想,这可能很奇怪,但是......)都是*连续的* numpy可以猜测你想从哪里得到花式指数产生的维度。如果他们不是连续的,那就把他们放在首位。如果你记得所有花哨的索引都是“一体”的,这是有道理的。 – seberg