получить " 1 " для одномерного numpy.массив, использующий функцию shape-like
в функции я даю массив Numpy: он может быть многопозиционным, но также и однопозиционным
поэтому, когда я даю многопозиционный массив:
np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape
>>> (3, 4)
и
np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape[1]
>>> 4
хорошо.
но когда я спрашиваю форме
np.array([1,2,3,4]).shape
>>> (4,)
и
np.array([1,2,3,4]).shape[1]
>>> IndexError: tuple index out of range
Ooops, кортеж содержит только один элемент... пока я хочу 1
чтобы указать, что это одномерный массив.
Есть ли способ получить это ? Я имею в виду с простым функция или метод, и без дискриминантного теста с ndim
например ?
спасибо !
2 ответов
>>> a
array([1, 2, 3, 4])
>>> a.ndim
1
>>> b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> b.ndim
2
Если вам нужен вектор столбца, вы можете использовать .reshape
метод - в самом деле, .shape
на самом деле является настраиваемым свойством, поэтому numpy также позволяет вам сделать это:
>>> a
array([1, 2, 3, 4])
>>> a.shape += (1,)
>>> a
array([[1],
[2],
[3],
[4]])
>>> a.shape
(4, 1)
>>> a.ndim
2
хм, нет способа установить значение по умолчанию для доступа к элементу списка, но вы можете попробовать:
>>> shape = np.array([1,2,3,4]).shape
>>> shape[1] if shape[1:] else 1
1
HTH.