我有一个带浮动的数组(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]
答案 0 :(得分:1)
这样的事情对你有用吗?
>>> 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.]]