你可以像这样使用ufunc.outer:
steps = np.arange(0, 22.5, 2.5)
vect = np.random.normal(10, 5.0, 10)
np.less.outer(vect,steps[1:]) & np.greater_equal.outer(vect,steps[:-1])
样本输出:
array([[False, False, False, False, False, False, True, False],
[False, False, False, False, True, False, False, False],
[False, True, False, False, False, False, False, False],
[False, False, False, True, False, False, False, False],
[False, False, False, True, False, False, False, False],
[False, False, False, False, True, False, False, False],
[False, False, False, False, False, False, False, True],
[False, False, False, True, False, False, False, False],
[False, False, True, False, False, False, False, False],
[False, False, False, True, False, False, False, False]])
或作为数据帧
pd.DataFrame(np.less.outer(vect,steps[1:]) & np.greater_equal.outer(vect,steps[:-1]), columns=[f"{steps[i]:.1f}-{steps[i+1]:.1f}" for i in range(len(steps)-1)])
输出:
0.0-2.5 2.5-5.0 5.0-7.5 7.5-10.0 10.0-12.5 12.5-15.0 15.0-17.5 17.5-20.0
0 False False False False False False True False
1 False False False False True False False False
2 False True False False False False False False
3 False False False True False False False False
4 False False False True False False False False
5 False False False False True False False False
6 False False False False False False False True
7 False False False True False False False False
8 False False True False False False False False
9 False False False True False False False False