Понимание формы массива numpy .array - PullRequest
1 голос
/ 04 августа 2020

Если массив x объявлен как:

x = np.array([[1, 2], [3, 4]])

, форма x будет (2, 2), потому что это матрица 2x2.

Однако для 1 -мерный вектор, например:

x = np.array([1, 2, 3])

почему форма x дает (3,), а не (1,3)?

Я ошибаюсь, понимая форму как (row, column)?

Ответы [ 3 ]

2 голосов
/ 04 августа 2020

Потому что np.array([1,2,3]) - одномерный массив. (3,) означает, что это одномерное измерение с тремя элементами.

(1,3) означает, что это двумерный массив. Если вы используете метод reshape() в массиве и передаете ему аргументы (1,3), к нему будут добавлены дополнительные скобки.

>>> np.array([1,2,3]).reshape(1,3)
array([[1, 2, 3]])
1 голос
/ 04 августа 2020

Как согласно документам , np.array являются многомерными контейнерами. Учтите:

np.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]).shape
# (2, 2, 2)

Кроме того, np.shape всегда возвращает кортеж. В вашем примере (3,) - это представление одноэлементного кортежа, которое является правильным значением для формы одномерного массива.

0 голосов
/ 04 августа 2020

np.array представляет собой n-мерный массив. Это может включать двумерный массив для представления матрицы, для которой подходит (row, column). Он может также включать одномерные, трехмерные или другие массивы, для которых (row, column) слишком много / мало измерений. Сравните:

>>> # 1-dimensional
>>> np.array([1, 2, 3]).shape
(3,)
>>> np.array([1, 2, 3])[1]
2
>>> # 2-dimensional
>>> np.array([[1, 2, 3]]).shape
(1, 3)
>>> np.array([[1, 2, 3]])[0,1]
2
>>> np.array([[1], [2], [3]]).shape
(3, 1)
>>> np.array([[1], [2], [3]])[1, 0]
2
>>> # 3-dimensional
>>> np.array([[[1, 2, 3]]]).shape
(1, 1, 3)
>>> np.array([[[1, 2, 3]]])[0,0,1]
2
>>> np.array([[[1,2],[3,4]],[[5, 6], [7, 8]]]).shape
(2, 2, 2)

Обратите внимание на то, как фигуры (3,), (1, 3), (3, 1), (1, 1, 3), ... представляют разные логические схемы, примером чему служит другое положение, в котором указаны c элемент находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...