np.max
chỉ 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.maximum
là 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.maximum
cũ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.maximum
bắ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.
amax
cho 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ụ:axis
tham số) có loại trừ nóufunc
không?