访问 numpy 数组的所有元素

Accessing all elements of a numpy array

我有一个 2d numpy 整数数组,现在我想将所有大于 5 的元素更改为 5。
例如,

[[2, 6],
 [7, 3]]

[[2, 5],
 [5, 3]]

现在,我目前的方法是使用两个 for 循环访问所有元素,然后检查每个元素是否大于 5,如下所示:

h, w = arr.shape[:2]
for x in range(h):
    for y in range(w):
        if arr[x,y] > 5:
            arr[x,y] = 5

是否有任何 更多 pythonic 方法来做到这一点?

使用np.clip() 它可以裁剪上下限值。我们只是将 None 作为较低的值传递,以仅在较高的值上进行剪辑。

>>> import numpy as np
>>> arr = np.array([[2, 6], [7, 3]])
>>> arr
array([[2, 6],
       [7, 3]])
>>> np.clip(arr, None, 5)
array([[2, 5],
       [5, 3]])
>>>