2016-08-26 1 views
1
A = np.array([[ 1, 2, 3], 
      [ 4, 5, 6], 
      [ 7, 8, 9], 
      [10,11,12]]) 
B = A[:, np.newaxis] 
print(B) 
print(B.shape) 

выходс использованием newaxis в Python

[[[ 1 2 3]] 

[[ 4 5 6]] 

[[ 7 8 9]] 

[[10 11 12]]] 

(4L, 1L, 3L) 

У меня есть два вопроса:

  1. Почему существуют дополнительные скобки вне скобок, например, [[ 1 2 3]], так почему это не [ 1 2 3] ?
  2. какой 1L средний? Мне кажется, что B является матрицей 4X3, так почему же это не (4L, 3L)?
+1

Для наглядности подумайте, что 'B' как' B = A [:, np.newaxis,:] '. Вы добавили измерение в середине двух существующих измерений 'A'. – hpaulj

ответ

4

Обратитесь к Numpy ссылочного документа (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html), Каждый объект newaxis в кортеже выбора служит для расширения размеров в результате отбора на одно измерение единицы длины. Добавленный размер - это позиция объекта newaxis в кортеже выбора.

  1. Здесь каждый кронштейн представляет собой один размер, дополнительный кронштейн вызван новой осью.
  2. 1L означает размер, увеличенный на newaxis.
2

«лишние» скобка и 1L есть по той же причине: ваше использование np.newaxis вставили новое измерение степени 1 в массив формы, другими словами, вы преобразованного двумерный массив 4x3 в трехмерный массив 4x1x3.

Каждый из 4 «строк» ​​из B содержит двумерный массив 1x3, такие как

[[4,5,6]] 

, тогда как каждая соответствующая строка A была просто одномерный массив длины 3:

[4,5,6] 

Следовательно, дополнительные кронштейны.

+1

Это то, что должно делать 'np.newaxis', поэтому я предполагаю, что он задает вопрос: что вы ожидали вместо этого? – jez

+0

Благодарим вас за ответ. Одна вещь, которую я до сих пор не понимаю, заключается в том, почему в А есть запятая, но нет?, 'Для разделения строк в B? – Dong

+0

Должна быть запятая при определении массива (это недействительный синтаксис Python без него). Но для показа, я думаю, 'numpy' пропускает запятые, когда * печатает * массив иногда, по-видимому, для уменьшения визуального беспорядка. – jez