替换给定范围内的numpy数组元素



>假设我有以下 numpy 数组。

arr = np.array( [ 1.0, 1.1, 1.44, 1.8, 1.0, 1.67, 1.23, 1.0] )

我可以将所有等于 1.0 的元素替换为 0.0,只需使用以下行即可。

arr[arr==1.0] = 0.0

我如何在不运行 for 循环的情况下将 1.0 - 1.5 之间的所有元素替换为 1.0。

基本上我问的是怎么做以下几点

arr[arr>1.0 and arr<1.5] = 1.0

谢谢

您只需要使用&将条件组合在一起,并将条件包含在( )

arr[(arr>1.0) & (arr<1.5)] = 1.0
# array([1.  , 1.  , 1.  , 1.8 , 1.  , 1.67, 1.  , 1.  ])   

你可以这样做

arr = np.array( [ 1.0, 1.1, 1.44, 1.8, 1.0, 1.67, 1.23, 1.0] )
arr[(1<arr) & (arr<1.5)] = 1.0

您需要使用按位&将数组连接到一个数组掩码中。