Làm cách nào để tôi có được vị trí (chỉ số) của giá trị lớn nhất trong mảng NumPy đa chiều?
Câu trả lời:
Các argmax()
phương pháp sẽ giúp.
Cập nhật
(Sau khi đọc bình luận) Tôi tin rằng argmax()
phương pháp này cũng sẽ hoạt động cho các mảng đa chiều. Tài liệu được liên kết đưa ra một ví dụ về điều này:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Cập nhật 2
(Cảm ơn bình luận của KennyTM ) Bạn có thể sử dụng unravel_index(a.argmax(), a.shape)
để lấy chỉ mục dưới dạng một tuple:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
unravel_index(a.argmax(), a.shape)
để lấy chỉ mục dưới dạng một tuple.
(sửa) Tôi đang đề cập đến một câu trả lời cũ đã bị xóa . Và câu trả lời được chấp nhận đã đến sau tôi. Tôi đồng ý rằng argmax
tốt hơn câu trả lời của tôi.
Làm như thế này sẽ không dễ đọc / trực quan hơn phải không?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Hoặc là,
numpy.argwhere(a.max() == a)
Một cách khác là thay đổi numpy
mảng thành list
và sử dụng max
và index
các phương thức:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4