让我们说我有一个数组y,其中包含连续数,该连续数通常从-1到5,可能有一些离群值,但是我想通过给它们指定特定的整数来将它们固定为指定的整数(0,1,2,3,4)整数范围结束的点,即。 [0.7,1.6,2.4,3.7],因此这里0表示低于0.7的所有内容,1表示0.7到1.6之间的所有内容,2表示1.6到2.4之间的所有内容,依此类推。 我想知道numpy中是否有一个函数可以比下面的代码更有效地为我执行此操作。我已经阅读了numpy.fix和numpy.rint的文档,但看不到如何使用它们。
这是我基本上想做的一个例子:
def flatten(y):
for i in range(len(y)):
if y[i] <0.7:
y[i] = 0
elif y[i]>0.7 and y[i]<1.6:
y[i] = 1
elif y[i]>1.6 and y[i]< 2.4:
y[i] = 2
elif y[i] >2.4 and y[i]<3.7:
y[i] = 3
elif y[i]> 3.7:
y[i] = 4
return y
不必是一个函数,但至少要比这更有效。
答案 0 :(得分:1)
您可以使用np.digitize
:
np.digitize(y, [0.7, 1.6, 2.4, 3.7])