2009-10-17 30 views
5

Tôi đang sử dụng mảng object_ gumpy để lưu trữ chuỗi có độ dài thay đổi, ví dụ:Chuỗi dài nhất trong mảng object_ gumpy

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

Có cách nào dễ dàng để tìm độ dài của chuỗi dài nhất trong mảng mà không lặp qua tất cả các phần tử không?

Trả lời

5

max(a, key=len) mang đến cho bạn những chuỗi dài nhất (và len(max(a, key=len)) mang đến cho bạn chiều dài của nó) mà không yêu cầu bạn viết mã một vòng lặp rõ ràng, nhưng dĩ nhiên, max sẽ tự tạo vòng lặp nội bộ của nó, vì nó không thể xác định "chuỗi dài nhất" theo bất kỳ cách nào khác.

+1

Great câu trả lời !!! –

0

Không phải là nơi duy nhất độ dài của mỗi chuỗi được biết là bởi chuỗi. Vì vậy, bạn phải tìm ra từ mỗi chuỗi chiều dài của nó là gì.

2

Nếu bạn lưu trữ chuỗi trong một mảng numpy của đối tượng dtype, sau đó bạn không thể nhận được ở kích thước của các đối tượng (chuỗi) mà không lặp. Tuy nhiên, nếu bạn để cho np.array quyết định dtype, sau đó bạn có thể tìm hiểu độ dài của chuỗi dài nhất bởi nhìn trộm tại 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 
0

Nói rằng tôi muốn để có được những chuỗi dài nhất trong cột thứ hai:

data_array = [['BFNN' 'Forested bog without permafrost or patterning, no internal lawns'] 
      ['BONS' 'Nonpatterned, open, shrub-dominated bog']] 


def get_max_len_column_value(data_array, column): 
    return len(max(data_array[:,[column]], key=len)[0]) 

get_max_len_column_value(data_array, 1) 

>>>64 
Các vấn đề liên quan