Hãy thử numpy.clip
:
>>> import numpy
>>> a = numpy.arange(-10, 10)
>>> a
array([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2,
3, 4, 5, 6, 7, 8, 9])
>>> a.clip(0, 10)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Bạn chỉ có thể kẹp nửa dưới với clip(0)
.
>>> a = numpy.array([1, 2, 3, -4, 5])
>>> a.clip(0)
array([1, 2, 3, 0, 5])
Bạn chỉ có thể kẹp nửa trên với clip(max=n)
. (Điều này tốt hơn nhiều so với đề xuất trước đây của tôi, liên quan đến việc chuyển NaN
đến tham số đầu tiên và sử dụng out
để ép buộc loại.):
>>> a.clip(max=2)
array([ 1, 2, 2, -4, 2])
Một cách tiếp cận thú vị khác là sử dụng where
:
>>> numpy.where(a <= 2, a, 2)
array([ 1, 2, 2, -4, 2])
Cuối cùng, hãy xem xét câu trả lời của aix . Tôi thích clip
các thao tác đơn giản hơn vì nó tự ghi lại, nhưng câu trả lời của anh ấy thích hợp hơn cho các thao tác phức tạp hơn.