numpy object_数组中最长的字符串

ast*_*rog 5 python arrays numpy

我正在使用一个numpy object_数组来存储可变长度的字符串,例如

a = np.array(['hello','world','!'],dtype=np.object_)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在不绕过所有元素的情况下找到数组中最长字符串的长度?

Ale*_*lli 7

max(a, key=len)给你最长的字符串(并len(max(a, key=len))给你它的长度),而不要求你编写一个显式循环,但当然max会在内部进行自己的循环,因为它不可能以任何其他方式识别"最长的字符串".


unu*_*tbu 5

如果将字符串存储在 dtype 对象的 numpy 数组中,那么不循环就无法获得对象(字符串)的大小。但是,如果让 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
Run Code Online (Sandbox Code Playgroud)