Trả về các phần tử duy nhất được sắp xếp của một mảng. Có ba đầu ra tùy chọn ngoài các yếu tố duy nhất
các chỉ số của mảng đầu vào cung cấp các giá trị duy nhất
các chỉ số của mảng duy nhất tái cấu trúc mảng đầu vào
số lần mỗi giá trị duy nhất xuất hiện trong mảng đầu vào
mảng đầu vào. Trừ khi trục được chỉ định, trục này sẽ bị làm phẳng nếu nó chưa phải là 1-D
return_index bool, tùy chọnNếu Đúng, cũng trả về các chỉ số của ar [dọc theo trục đã chỉ định, nếu được cung cấp hoặc trong mảng phẳng] dẫn đến mảng duy nhất
return_inverse bool, tùy chọnNếu Đúng, cũng trả về các chỉ số của mảng duy nhất [đối với trục đã chỉ định, nếu được cung cấp] có thể được sử dụng để tái tạo lại ar
return_counts bool, tùy chọnNếu Đúng, cũng trả về số lần mỗi mục duy nhất xuất hiện trong ar
trục int hoặc Không, tùy chọnTrục để hoạt động trên. Nếu Không, ar sẽ bị san phẳng. Nếu là một số nguyên, các mảng con được lập chỉ mục bởi trục đã cho sẽ được làm phẳng và được coi là các phần tử của mảng 1-D với kích thước của trục đã cho, xem ghi chú để biết thêm chi tiết. Mảng đối tượng hoặc mảng có cấu trúc chứa đối tượng không được hỗ trợ nếu trục kwarg được sử dụng. Mặc định là Không có
Mới trong phiên bản 1. 13. 0
Nếu Đúng, thu gọn nhiều giá trị NaN trong mảng trả về thành một
Mới trong phiên bản 1. 24
Trả về . duy nhất ndarrayCác giá trị duy nhất được sắp xếp
unique_indices ndarray, tùy chọnCác chỉ số của lần xuất hiện đầu tiên của các giá trị duy nhất trong mảng ban đầu. Chỉ được cung cấp nếu return_index là True
unique_inverse ndarray, tùy chọnCác chỉ số để xây dựng lại mảng ban đầu từ mảng duy nhất. Chỉ được cung cấp nếu return_inverse là True
unique_counts ndarray, tùy chọnSố lần mỗi giá trị duy nhất xuất hiện trong mảng ban đầu. Chỉ được cung cấp nếu return_counts là True
Mới trong phiên bản 1. 9. 0
Xem thêm
numpy.lib.arraysetops
Mô-đun với một số chức năng khác để thực hiện các hoạt động thiết lập trên mảng
Lặp lại các phần tử của một mảng
ghi chú
Khi một trục được chỉ định, các mảng con được lập chỉ mục bởi trục được sắp xếp. Điều này được thực hiện bằng cách biến trục đã chỉ định thành chiều đầu tiên của mảng [di chuyển trục đến chiều đầu tiên để giữ thứ tự của các trục khác] và sau đó làm phẳng các mảng con theo thứ tự C. Các mảng con được làm phẳng sau đó được xem như một kiểu có cấu trúc với mỗi phần tử được gán một nhãn, với hiệu ứng là chúng ta kết thúc bằng một mảng 1-D gồm các kiểu có cấu trúc có thể được xử lý giống như bất kỳ mảng 1-D nào khác. Kết quả là các mảng con được làm phẳng được sắp xếp theo thứ tự từ điển bắt đầu với phần tử đầu tiên
Làm cách nào để tìm số m cặp duy nhất và khác nhau từ một danh sách, cho trước một danh sách các số nguyên?
Ghi chú. Cặp có thứ tự [x,y] và [y,x] được coi là cùng một cặp
đầu vào mẫu
[2,3,7,9,0], m = 2
Đầu ra mẫu
2
Giải trình
Danh sách đã cho là [2,3,7,9,0] và sự khác biệt cần được xác định từ danh sách là 2. Các số 2 và 0 cho hiệu tuyệt đối là 2, các số 9 và 7 cũng có hiệu tuyệt đối là 2. Do đó, số lượng các cặp duy nhất có sự khác biệt tuyệt đối là 2, là 2
trường hợp góc
Nếu không có 2 giá trị có hiệu là m thì sao?
Điều gì sẽ xảy ra nếu chênh lệch tuyệt đối m được tìm thấy là một giá trị nhỏ hơn 0?
Ghi chú. Đừng quên tìm ra các trường hợp góc khuất khác [nếu có] và đưa ra giải pháp thích hợp cho những trường hợp đó, vì chúng rất quan trọng vì điều này giúp người phỏng vấn có cái nhìn sâu sắc về khả năng tư duy, khả năng logic và khả năng phân tích vấn đề của ứng viên.
Phương pháp cơ bản để giải quyết vấn đề này
Một cách tiếp cận ngây thơ là xem xét từng phần tử và xem liệu mọi phần tử khác và sự khác biệt tuyệt đối của phần tử hiện tại có phải là m hay không. Chúng ta sẽ phải sử dụng 2 vòng lặp for
trong đó vòng lặp bên ngoài sẽ lấy phần tử đầu tiên và vòng lặp bên trong sẽ tìm mọi phần tử và lấy sự khác biệt của nó với giá trị được chọn của vòng lặp bên ngoài. Vì có 2 vòng lặp for
liên quan nên độ phức tạp về thời gian sẽ là 0[kích thước của danh sách*kích thước của danh sách] = 0[n**2]
def findPairs[lst, n, m]:
count = 0
for i in range[0, n]:
for j in range[i+1, n]:
if lst[i] - lst[j] == m or lst[j] - lst[i] == m:
count += 1
return count
nums = [2,3,7,9,0]
n = len[nums]
m = 2
findPairs[nums, n, m]
đầu ra
2
Phương pháp tối ưu hóa để giải quyết vấn đề
Phương thức
21 từ mô-đun bộ sưu tập theo dõi số lượng của mọi phần tử có trong danh sách
def findPairs[nums, m]:
result = 0
if m < 0:
return 0
elif m == 0:
dic = Counter[nums]
for i in dic.values[]:
if i != 1:
result += 1
else:
num = set[nums]
for i in num:
if i+m in num:
result += 1
return result
nums = [2,3,7,9,0]
m = 2
findPairs[nums, m]
đầu ra
2
Khi tìm thấy sự khác biệt tuyệt đối lớn hơn 0, các phần tử được sắp xếp đầu tiên. Sau đó, một vòng lặp for
được lặp lại trên mọi phần tử của danh sách và nó được thêm vào m [sự khác biệt tuyệt đối]. Số này được tìm kiếm trong danh sách. Nếu nó được tìm thấy, thì số lượng được tăng thêm 1. Xem xét ví dụ dưới đây
Danh sách của chúng tôi là [2, 3,7,9,0] và m là 2. Lặp lại từ phần tử đầu tiên trong danh sách, nếu tìm thấy 2+2 [4] trong danh sách, kết quả sẽ tăng dần. Nó được thực hiện cho tất cả các yếu tố. Dưới đây là một dấu vết
2+2 = 4, 4 in list? No. Result = 0 3+2 = 5, 5 in list? No. Result = 0 7+2 = 9, 9 in list? Yes. Result = 1 9+2=11, 11 in list? No. Result = 1 0+2=2, 2 in list? Yes. Result = 2
Kết quả = 2 được trả về
Phần kết luận
Trong bài đăng này, chúng tôi đã hiểu cách giải quyết số m cặp duy nhất trong một tuyên bố vấn đề về danh sách. Đừng quên đăng nhận xét của bạn về các cách tiếp cận khác nhau cho cùng một vấn đề