numpy对象数组中最长字符串
我正在使用一个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
函数内部还是会进行循环,因为它必须通过某种方式来找出“最长的字符串”。