len () массива numpy в python

Если я использую len(np.array([[2,3,1,0], [2,3,1,0], [3,2,1,1]])), я вернусь 3.

Почему нет аргументов в пользу len(), относительно какой оси мне нужна длина в многомерных массивах? Это настораживает. Есть ли альтернатива?


person Monica Heddneck    schedule 28.03.2017    source источник
comment
Просто примените функцию len к каждой строке и запустите max над ней.   -  person OneCricketeer    schedule 29.03.2017
comment
array.shape[i], где i указывает соответствующую ось, должно работать нормально.   -  person    schedule 29.03.2017


Ответы (3)


Что такое len эквивалентного вложенного списка?

len([[2,3,1,0], [2,3,1,0], [3,2,1,1]])

Используя более общую концепцию shape, numpy разработчики решили реализовать __len__ в качестве первого измерения. Python отображает len(obj) на obj.__len__.

X.shape возвращает кортеж, который имеет len - количество измерений X.ndim. X.shape[i] выбирает измерение ith (прямое приложение индексации кортежей).

person hpaulj    schedule 29.03.2017
comment
Помните, что это не то же поведение, что и MATLAB. В MATLAB длина многомерного массива - это длина по самому длинному измерению (которое может быть вычислено max(x.shape) в Python). (См. Документацию: mathworks.com/help/matlab/ref/length.html.) - person fonini; 16.11.2017

Легкий. Используйте 1_.

>>> nparray.shape
(5, 6) #Returns a tuple of array dimensions.
person Dmitry Pleshkov    schedule 28.03.2017

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

len(np.array([[2,3,1,0], [2,3,1,0], [3,2,1,1]]).T)
person Batman    schedule 29.03.2017
comment
Причина, по которой он получил отрицательные голоса, заключается в том, что это запутанный взгляд на вещи. при применении len вы должны получить длину, и вам не нужно задумываться о математическом тождестве, чтобы понять, что представляет собой len (транспонирование). Также это не работает для len (arr.shape) ›2 - person Gulzar; 10.08.2019