numpy对象数组中最长字符串

9 投票
5 回答
7911 浏览
提问于 2025-04-15 15:08

我正在使用一个numpy的对象数组来存储长度不一的字符串,比如:

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

有没有简单的方法可以找到这个数组中最长字符串的长度,而不需要一个一个地遍历所有元素呢?

5 个回答

0

不可以,因为只有字符串本身知道它的长度。所以你得从每个字符串中去找出它的长度。

8

如果你把字符串存储在一个numpy数组中,并且把数据类型设置为对象(dtype为object),那么你就不能直接知道这些对象(字符串)的大小,而需要通过循环来一个一个查看。不过,如果你让numpy自己决定数据类型,那么你可以通过查看数据类型来找到最长字符串的长度:

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
11

max(a, key=len) 这个写法可以帮你找到列表中最长的字符串,而 len(max(a, key=len)) 则可以告诉你这个最长字符串的长度。这样做不需要你自己写一个循环来查找,但实际上 max 函数内部还是会进行循环,因为它必须通过某种方式来找出“最长的字符串”。

撰写回答