Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Longest string in numpy object_ array

I'm using a numpy object_ array to store variable length strings, e.g.

a = np.array(['hello','world','!'],dtype=np.object_)

Is there an easy way to find the length of the longest string in the array without looping over all elements?

like image 824
astrofrog Avatar asked Oct 17 '09 16:10

astrofrog


2 Answers

max(a, key=len) gives you the longest string (and len(max(a, key=len)) gives you its length) without requiring you to code an explicit loop, but of course max will do its own looping internally, as it couldn't possibly identify "the longest string" in any other way.

like image 124
Alex Martelli Avatar answered Oct 17 '22 01:10

Alex Martelli


If you store the string in a numpy array of dtype object, then you can't get at the size of the objects (strings) without looping. However, if you let np.array decide the dtype, then you can find out the length of the longest string by peeking at the 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
like image 32
unutbu Avatar answered Oct 16 '22 23:10

unutbu