Skip to main content
 首页 » 编程设计

python之用大数组中的值 c 替换从值 a 到 b 的 float

2025年05月04日14yjmyzz

我有一个带 float 的数组 (2000 * 2000),我想对数字进行分类。 因此,10 到 20 之间的所有数字都应替换为 15,20 到 60 之间的所有数字都应替换为 40,依此类推。

我用几个 if 语句写了一些循环遍历所有行和列的东西……但它需要永远运行大型数组。有人知道如何加快速度吗?

for a in range(grid.shape[0]): #grid is an array 
    for b in range(grid.shape[1]):     
        for c in range(len(z)): 
            if z[c][0] <= grid[a][b] < z[c][1]: # z is a list containing [lower,upper,replace_value] 
                grid[a][b]=z[c][2] 

请您参考如下方法:

这样的事情对你有用吗?

>>> import numpy as np 
>>> grid = np.random.random((5,5)) * 100 
>>> z = np.array([0, 10, 20, 60, 100.]) 
>>> replace_value = np.array([np.nan, 5., 15., 40., 80.]) 
 
>>> grid = replace_value[z.searchsorted(grid)] 
>>> print grid 
[[ 15.  40.  80.  80.  15.] 
[ 80.  40.  15.  80.  80.] 
[ 15.  80.   5.  15.  40.] 
[ 40.  80.   5.   5.  80.] 
[ 40.   5.  80.   5.  40.]]