Tôi cần một cách nhanh chóng để duy trì hoạt động tối đa của một mảng có nhiều mảng. Ví dụ, nếu mảng của tôi là:Chạy tối đa các giá trị mảng có khối lượng
x = numpy.array([11,12,13,20,19,18,17,18,23,21])
Tôi muốn:
numpy.array([11,12,13,20,20,20,20,20,23,23])
Rõ ràng tôi có thể làm điều này với một vòng lặp nhỏ:
def running_max(x):
result = [x[0]]
for val in x:
if val > result[-1]:
result.append(val)
else:
result.append(result[-1])
return result
Nhưng mảng của tôi có hàng trăm hàng ngàn mục và tôi cần phải gọi nó nhiều lần. Có vẻ như có một mẹo vặt để loại bỏ vòng lặp, nhưng tôi dường như không thể tìm thấy bất cứ thứ gì có hiệu quả. Cách khác sẽ là viết phần mở rộng này thành phần mở rộng C, nhưng có vẻ như tôi đang tái phát minh ra bánh xe.
tôi sẽ gọi CPC tối đa tích lũy tối đa đề xuất cửa sổ cho tôi. tiếc là googling cho rằng không bật lên bất cứ điều gì hữu ích. –
tôi không cài đặt có phần, nhưng max.accumulate có thể hoạt động. kiểm tra "tích lũy" trong tài liệu. –
@andrew max không có thuộc tính tích lũy trong gumpy. Đó sẽ là một giải pháp tích hợp tốt mặc dù nó đã làm. – JoshAdel