Самая длинная строка в numpy object_ массив

STL является в большой степени оптимизированной библиотекой. На самом деле даже предлагается использовать STL в играх, где высокая производительность могла бы быть необходима. Массивы слишком подвержены ошибкам, чтобы использоваться в повседневных задачах. Сегодняшние компиляторы также очень умны и могут действительно произвести превосходный код с STL. Если Вы знаете то, что Вы делаете, STL может обычно обеспечивать необходимую производительность. Например, путем инициализации векторов к необходимому размеру (если Вы знаете от запуска), можно в основном достигнуть производительности массива. Однако могли бы быть случаи, где Вам все еще нужны массивы. При взаимодействии через интерфейс с низкоуровневым кодом (т.е. блок) или старые библиотеки, которые требуют массивов, Вы не могли бы быть в состоянии использовать векторы.

5
задан astrofrog 17 October 2009 в 16:05
поделиться

3 ответа

max (a, key = len) дает самую длинную строку (а len (max (a, key = len)) дает вам ее длину) не требуя от вас кодирования явного цикла, но, конечно, max будет выполнять свой собственный цикл внутри, поскольку он никак не может идентифицировать «самую длинную строку» каким-либо другим способом.

7
ответ дан 14 December 2019 в 01:11
поделиться

Если вы сохраняете строку в массиве numpy объектов dtype, вы не можете получить размер объектов (строк) без цикла. Однако, если вы позволите np.array определять dtype, вы можете узнать длину самой длинной строки, посмотрев на dtype:

In [64]: a = np.array(['hello','world','!','Oooh gaaah booo gaah?'])

In [65]: a.dtype
Out[65]: dtype('|S21')

In [72]: a.dtype.itemsize
Out[72]: 21
2
ответ дан 14 December 2019 в 01:11
поделиться

Нет, поскольку длина каждой строки известна только по строке. Таким образом, вы должны выяснить у каждой строки, какова ее длина.

0
ответ дан 14 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: