Tìm tổng tối đa trong mảng Python

Mã Python

Chạy

def find[arr, l]:
    max_sum = -1
    ans = []
    for i in range[l]:
        for j in range[i, l]:
            a = sum[array[i:j + 1]]
            if a > max_sum:
                max_sum = a
                ans = array[i:j + 1]

    print["Sub array which will give maximum sum", ans]
    print["Maximum sum = ", max_sum]


array = [-1, 8, 1, -7, -1, 5, 1, -3]
print["Array =", array]
find[array, len[array]]

đầu ra

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9

< Tính toán trên mảng NumPy. Chức năng phổ quát. nội dung. Tính toán trên mảng. Phát sóng >

Thông thường, khi phải đối mặt với một lượng lớn dữ liệu, bước đầu tiên là tính toán số liệu thống kê tóm tắt cho dữ liệu được đề cập. Có lẽ thống kê tóm tắt phổ biến nhất là giá trị trung bình và độ lệch chuẩn, cho phép bạn tóm tắt các giá trị "điển hình" trong tập dữ liệu, nhưng các tổng hợp khác cũng hữu ích [tổng, tích, trung vị, tối thiểu và tối đa, lượng tử, v.v. ]

NumPy có các hàm tổng hợp tích hợp sẵn nhanh chóng để làm việc trên các mảng;

Tính tổng các giá trị trong một mảng¶

Ví dụ nhanh, hãy xem xét tính tổng của tất cả các giá trị trong một mảng. Bản thân Python có thể làm điều này bằng cách sử dụng chức năng

np.sum[L]
3 được tích hợp sẵn

Trong 1]

import numpy as np

Trong 2]

L = np.random.random[100]
sum[L]

Ra[2]

55.61209116604941

Cú pháp khá giống với cú pháp của hàm

np.sum[L]
3 của NumPy và kết quả giống nhau trong trường hợp đơn giản nhất

Trong 3]

np.sum[L]

Ra[3]

________số 8

Tuy nhiên, vì nó thực thi thao tác trong mã được biên dịch, nên phiên bản thao tác của NumPy được tính toán nhanh hơn nhiều

Trong [4]

big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
0

Hãy cẩn thận, mặc dù. Hàm

np.sum[L]
3 và hàm
np.sum[L]
6 không giống nhau nên đôi khi có thể dẫn đến nhầm lẫn. Đặc biệt, các đối số tùy chọn của chúng có ý nghĩa khác nhau và
np.sum[L]
6 nhận thức được nhiều kích thước mảng, như chúng ta sẽ thấy trong phần sau

Tối thiểu và Tối đa¶

Tương tự, Python có sẵn các hàm

np.sum[L]
8 và
np.sum[L]
9, được sử dụng để tìm giá trị nhỏ nhất và giá trị lớn nhất của bất kỳ mảng nào

Trong [5]

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
6

Ra[5]

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
7

Các chức năng tương ứng của NumPy có cú pháp tương tự và lại hoạt động nhanh hơn nhiều

Trong [6]

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
8

Ra[6]

Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
7

Trong [7]

L = np.random.random[100]
sum[L]
1

L = np.random.random[100]
sum[L]
2

Đối với

np.sum[L]
8,
np.sum[L]
9,
np.sum[L]
3 và một số tập hợp NumPy khác, cú pháp ngắn hơn là sử dụng các phương thức của chính đối tượng mảng

Trong [8]

L = np.random.random[100]
sum[L]
3

L = np.random.random[100]
sum[L]
4

Bất cứ khi nào có thể, hãy đảm bảo rằng bạn đang sử dụng phiên bản NumPy của các tập hợp này khi thao tác trên mảng NumPy

Tập hợp đa chiều¶

Một loại hoạt động tổng hợp phổ biến là tổng hợp dọc theo một hàng hoặc cột. Giả sử bạn có một số dữ liệu được lưu trữ trong một mảng hai chiều

Trong [9]

L = np.random.random[100]
sum[L]
5

L = np.random.random[100]
sum[L]
6

Theo mặc định, mỗi hàm tổng hợp NumPy sẽ trả về tổng hợp trên toàn bộ mảng

Trong [10]

L = np.random.random[100]
sum[L]
7

Ra[10]

L = np.random.random[100]
sum[L]
8

Các hàm tổng hợp nhận một đối số bổ sung chỉ định trục dọc theo đó tổng hợp được tính toán. Ví dụ: chúng ta có thể tìm giá trị nhỏ nhất trong mỗi cột bằng cách chỉ định

55.612091166049424
3

Trong [11]

L = np.random.random[100]
sum[L]
9

Ra[11]

55.61209116604941
0

Hàm trả về 4 giá trị, tương ứng với 4 cột số

Tương tự, chúng ta có thể tìm giá trị lớn nhất trong mỗi hàng

Trong [12]

55.61209116604941
1

Ra[12]

55.61209116604941
2

Cách chỉ định trục ở đây có thể gây nhầm lẫn cho người dùng đến từ các ngôn ngữ khác. Từ khóa

55.612091166049424
4 chỉ định kích thước của mảng sẽ được thu gọn, thay vì kích thước sẽ được trả về. Vì vậy, chỉ định
55.612091166049424
3 có nghĩa là trục đầu tiên sẽ bị thu gọn. đối với mảng hai chiều, điều này có nghĩa là các giá trị trong mỗi cột sẽ được tổng hợp

Các hàm tổng hợp khác¶

NumPy cung cấp nhiều chức năng tổng hợp khác, nhưng chúng tôi sẽ không thảo luận chi tiết về chúng ở đây. Ngoài ra, hầu hết các tập hợp đều có một đối tác an toàn cho

55.612091166049424
6 tính toán kết quả trong khi bỏ qua các giá trị bị thiếu, được đánh dấu bằng giá trị dấu phẩy động đặc biệt của IEEE là
55.612091166049424
6 [để thảo luận đầy đủ hơn về dữ liệu bị thiếu, hãy xem Xử lý dữ liệu bị thiếu]. Một số chức năng an toàn của
55.612091166049424
6 này đã không được thêm cho đến khi NumPy 1. 8, vì vậy chúng sẽ không khả dụng trong các phiên bản NumPy cũ hơn

Bảng sau đây cung cấp danh sách các hàm tổng hợp hữu ích có sẵn trong NumPy

Function NameNaN-safe VersionDescription
np.sum[L]
6
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
0Compute sum of elements
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
1
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
2Compute product of elements
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
3
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
4Compute mean of elements
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
5
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
6Compute standard deviation
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
7
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
8Compute variance
big_array = np.random.rand[1000000]
%timeit sum[big_array]
%timeit np.sum[big_array]
9
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
00Find minimum value
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
01
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
02Find maximum value
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
03
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
04Find index of minimum value
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
05
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
06Find index of maximum value
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
07
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
08Compute median of elements
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
09
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
60Compute rank-based statistics of elements
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
61N/AEvaluate whether any elements are true
Array = [-1, 8, 1, -7, -1, 5, 1, -3]
Sub array which will give maximum sum [8, 1]
Maximum sum = 9
62N/AEvaluate whether all elements

Chúng ta sẽ thấy những tập hợp này thường xuyên trong suốt phần còn lại của cuốn sách

Ví dụ. Chiều cao trung bình của các Tổng thống Hoa Kỳ là bao nhiêu?¶

Các tổng hợp có sẵn trong NumPy có thể cực kỳ hữu ích để tóm tắt một tập hợp các giá trị. Lấy một ví dụ đơn giản, hãy xem xét chiều cao của tất cả các tổng thống Hoa Kỳ. Dữ liệu này có sẵn trong tệp President_heights. csv, là danh sách nhãn và giá trị được phân tách bằng dấu phẩy đơn giản

Trong [13]

55.61209116604941
3

55.61209116604941
4

Chúng ta sẽ sử dụng gói Pandas mà chúng ta sẽ khám phá đầy đủ hơn trong Chương 3, để đọc tệp và trích xuất thông tin này [lưu ý rằng chiều cao được đo bằng centimet]

Trong [14]

55.61209116604941
5

55.61209116604941
6

Bây giờ chúng ta có mảng dữ liệu này, chúng ta có thể tính toán nhiều số liệu thống kê tóm tắt

Trong [15]

55.61209116604941
7

55.61209116604941
8

Lưu ý rằng trong mỗi trường hợp, hoạt động tổng hợp đã giảm toàn bộ mảng thành một giá trị tổng hợp duy nhất, cung cấp cho chúng tôi thông tin về phân phối giá trị. Chúng tôi cũng có thể muốn tính toán lượng tử

Trong [16]

55.61209116604941
9

np.sum[L]
0

Chúng tôi thấy rằng chiều cao trung bình của các tổng thống Hoa Kỳ là 182 cm, hay chỉ kém 6 feet

Tất nhiên, đôi khi sẽ hữu ích hơn khi xem biểu diễn trực quan của dữ liệu này mà chúng ta có thể thực hiện bằng cách sử dụng các công cụ trong Matplotlib [chúng ta sẽ thảo luận về Matplotlib đầy đủ hơn trong Chương 4]. Ví dụ: mã này tạo biểu đồ sau

Chủ Đề