np.maxchỉ là một bí danh cho np.amax. Hàm này chỉ hoạt động trên một mảng đầu vào duy nhất và tìm giá trị của phần tử tối đa trong toàn bộ mảng đó (trả về một vô hướng). Ngoài ra, nó cần một axisđối số và sẽ tìm giá trị tối đa dọc theo trục của mảng đầu vào (trả về một mảng mới).
>>> a = np.array([[0, 1, 6],
[2, 4, 1]])
>>> np.max(a)
6
>>> np.max(a, axis=0) # max of each column
array([2, 4, 6])
Hành vi mặc định của np.maximumlà lấy hai mảng và tính toán tối đa phần tử của chúng. Ở đây, 'tương thích' có nghĩa là một mảng có thể được phát sang mảng khác. Ví dụ:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Nhưng np.maximumcũng là một chức năng phổ quát , có nghĩa là nó có các tính năng và phương thức khác hữu ích khi làm việc với các mảng đa chiều. Ví dụ: bạn có thể tính toán mức tối đa tích lũy trên một mảng (hoặc một trục cụ thể của mảng):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Điều này là không thể với np.max.
Bạn có thể np.maximumbắt chước np.maxở một mức độ nhất định khi sử dụng np.maximum.reduce:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Thử nghiệm cơ bản cho thấy hai cách tiếp cận có thể so sánh về hiệu suất; và họ nên, như np.max()thực sự kêu gọinp.maximum.reduce để thực hiện tính toán.
amaxcho cùng một mục đích (gốc) nhưmaximum, tức là vớinumpy.amax([a1, a2], axis=0)--- nhưng điều này không được tối ưu hóa cho hành vi này nhưnumpy.maximum? Tương tự, các niceties được thêm vàonumpy.amax(ví dụ:axistham số) có loại trừ nóufunckhông?