В некоторых языках программирования или средах одномерный массив считается таким же, как двумерный массив, в котором длина одного из измерений равна 1.
Но нев numpy .
В numpy одномерный массив - это нечто:
- , который печатает
(n,)
в качестве своей формы (где n - длина его единственного измерения) - Чьим элементам требуется индивидуальный доступ только к одному индексу.
Кусковой двумерный массив - это нечто:
- Что печатает
(m,n)
как его форма - Чьи элементы требуют индивидуального доступа к двум индексам.
Атрибут shape для numpy ndarray сообщает вам длину каждого измерения массива.
В a = np.array([1, 2, 3])
вы создаете одномерный массив, а длина этого единственного измерения равна 3.
Чтобы создать «ближайший» двумерный массив, вам нужно будет вызвать np.array([[1, 2, 3]])
.
Обратите внимание на последовательный [[
в начале и последовательный ]]
в конце.Эти двойные скобки также появятся при печати этого двумерного массива.
Количество последовательных скобок в начале (или в конце) обычно соответствует тому, как вы визуально вычисляете количество измерений в ndarray..
Использование None в качестве индекса в numpy
Обычно в Python при разрезании списка или индексации в списке вы, вероятно, привыкли кполучая результат, который имеет либо такое же число измерений, либо меньшее число измерений.
Но в случае с крошечным обозначением иногда можно использовать индексирование для построениямногомерный ndarray.
Это то, что вы делаете здесь, когда вы берете результат np.array([4, 5, 6])
и затем индексируете его как [None, :]
.
В numpy, когда None
указывается в качестве индекса, это то же самое, что и указание numpy.newaxis
.(Это просто более компактная альтернатива numpy.newaxis
)
И указание numpy.newaxis
в качестве индекса для конкретной позиции (в вашем случае позиция 0 среди индексов) похоже на:«Я хочу добавить еще одно измерение, имеющее длину 1, в этой конкретной позиции»
(Обратите внимание, что в numpy слова axis и dimension используется взаимозаменяемо в документации).
В вашем случае np.array([4, 5, 6])
сначала возвращает одномерный массив, а длина этого единственного измерения равна 3 (поскольку имеется 3 элемента).
Когда вы затем индексируете в этом одномерном массиве с помощью [None, :]
, ваш первый индекс None
фактически говорит о том, что вы хотите добавить префикс нового измерения длиной 1 в позицию 0 (то есть позицию 0 средииндексы).Другими словами, вы говорите, что хотите сначала создать внешний массив длины 1, и единственным элементом этого внешнего массива будет внутренний массив, а форма и содержимое этого внутреннего массива дополнительно определяется индексами, которыеследуйте вашему None
(в данном случае только :
).
(Поскольку длина этого нового префиксного измерения всегда равна 1, единственным допустимым индексом, который вы можете использовать для этого нового измерения, будет0)
Ваш второй индекс (:
) фактически указывает, что вы хотите получить, когда вы используете индекс 0 в этом новом префиксном измерении.Указывая :
в качестве второго индекса, вы фактически говорите, что хотите, чтобы весь результат np.array([4, 5, 6])
присутствовал в позиции 0 нового префиксного измерения.