Dù bạn có tin hay không, sau khi định hình mã hiện tại của tôi, hoạt động lặp đi lặp lại của đảo ngược mảng numpy đã ăn một khối lớn thời gian chạy. Những gì tôi có ngay bây giờ là phương pháp dựa trên chế độ xem phổ biến:
reversed_arr = arr[::-1]
Có cách nào khác để làm điều đó hiệu quả hơn không, hay đó chỉ là ảo ảnh từ nỗi ám ảnh của tôi với hiệu suất numpy không thực tế?
arr
là một mảng numpy.
f2py
là bạn của bạn! Việc viết các phần quan trọng của thuật toán (đặc biệt là trong tính toán khoa học) bằng ngôn ngữ khác và gọi nó từ python là rất đáng giá. Chúc may mắn!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Tìm kiếm def flipud
. Các chức năng có nghĩa đen là bốn dòng dài.
arr[::-1]
chỉ trả về một cái nhìn đảo ngược. Nó nhanh như bạn có thể nhận được, và không phụ thuộc vào số lượng mục trong mảng, vì nó chỉ thay đổi các bước. Là những gì bạn đang đảo ngược thực sự là một mảng numpy?