Многомерный массив Numpy -Индексация размерного массива меняет порядок осей

Я работаю с многомерными -массивами Numpy. Я заметил некоторое непоследовательное поведение при доступе к этим массивам с другими массивами индексов. Например:

import numpy as np
start = np.zeros((7,5,3))
a     = start[:,:,np.arange(2)]
b     = start[0,:,np.arange(2)]
c     = start[0,:,:2]
print 'a:', a.shape
print 'b:', b.shape
print 'c:', c.shape

В этом примере я получаю результат:

a: (7, 5, 2)
b: (2, 5)
c: (5, 2)

Это меня смущает. Почему «b» и «c» не имеют одинаковых размеров? Почему «b» меняет порядок осей, а «а» нет?

Я смог спроектировать свой код с учетом этих несоответствий благодаря множеству модульных тестов, но понимание того, что происходит, было бы полезно.

Для справки: я использую Python 2.7.3 и Numpy 1.6.2 через MacPorts.

9
задан gbarter 13 August 2012 в 10:41
поделиться