Tôi có một mảng NumPy lớn:NumPy Lookup (Bản đồ, hoặc Point)
array([[32, 32, 99, 9, 45], # A
[99, 45, 9, 45, 32],
[45, 45, 99, 99, 32],
[ 9, 9, 32, 45, 99]])
và một mảng lớn ish các giá trị duy nhất trong một thứ tự cụ thể:
array([ 99, 32, 45, 9]) # B
Làm thế nào tôi có thể nhanh chóng (không có từ điển python, không có bản sao của A
, không có vòng python) thay thế các giá trị trong A
để trở thành chỉ báo của các giá trị trong B
?:
array([[1, 1, 0, 3, 2],
[0, 2, 3, 2, 1],
[2, 2, 0, 0, 1],
[3, 3, 1, 2, 0]])
Tôi cảm thấy ngớ ngẩn vì không thể làm điều này trên đầu của tôi, cũng không tìm thấy nó trong tài liệu. Điểm dễ dàng!
Giải pháp này thực hiện tương đối nhanh hơn cho use-case của tôi (B.size << A.size), nhưng đối với hồ sơ, giải pháp @ unutbu dường như có hiệu suất chung tốt hơn. Không, tuy nhiên là một giải pháp "tại chỗ" mà tôi có thể chỉ ám chỉ mong muốn khi tôi nói "thay thế các giá trị trong' A'. " ..mà tôi không nghĩ là có thể mà không có Cython. Cảm ơn cả hai! – Paul
Tôi cũng tìm thấy giải pháp của unutbu thường nhanh hơn trừ khi B.size << A.size. Thật vui khi thấy nhiều giải pháp và tinker với tối ưu hóa – JoshAdel