Hướng dẫn dùng np.max python

Tôi không nghĩ rằng việc vượt qua mảng hai lần là một vấn đề. Hãy xem xét mã giả sau đây:

minval = array[0]
maxval = array[0]
for i in array:
    if i  maxval:
       maxval = i

Mặc dù chỉ có 1 vòng lặp ở đây, nhưng vẫn có 2 kiểm tra. [Thay vì có 2 vòng lặp với 1 lần kiểm tra]. Thực sự điều duy nhất bạn lưu là chi phí của 1 vòng lặp. Nếu các mảng thực sự lớn như bạn nói, thì chi phí đó nhỏ so với tải công việc của vòng lặp thực tế. [Lưu ý rằng tất cả điều này được thực hiện trong C, vì vậy các vòng lặp ít nhiều miễn phí].

EDIT Xin lỗi 4 bạn đã ủng hộ và có niềm tin vào tôi. Bạn chắc chắn có thể tối ưu hóa điều này.

Đây là một số mã fortran có thể được biên dịch thành mô-đun python thông qua f2py[có thể một Cythonguru có thể đi cùng và so sánh mã này với phiên bản C được tối ưu hóa ...]:

subroutine minmax1[a,n,amin,amax]
  implicit none
  !f2py intent[hidden] :: n
  !f2py intent[out] :: amin,amax
  !f2py intent[in] :: a
  integer n
  real a[n],amin,amax
  integer i

  amin = a[1]
  amax = a[1]
  do i=2, n
     if[a[i] > amax]then
        amax = a[i]
     elseif[a[i] 

Bài Viết Liên Quan

Chủ Đề