【发布时间】:2013-06-07 23:53:58
【问题描述】:
希望有人可以向我解释我在 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 可以猜出你想把花哨的索引产生的维度放在哪里。如果它们不连续,则将它们放在首位。如果您记得所有花哨的索引都“作为一个”工作,这是有道理的。
标签: python arrays numpy transpose indices