我有两个数组。明智的一步:
steps = np.arange(0, 50, 2.5)
vect = np.random.normal(50, 5.6, 100)
index = [x for x in np.arange(len(a))]
我想检查 的每个元素vect
是否在一对steps
. 例如,如果vect[0]
在元素steps[0]
和之间steps[1]
,则返回True
, else False
。所以每个项目都vect
将与steps
成对的所有项目进行检查,如果这有意义的话。我在想这样的事情:
for x in index:
for y in vect:
print(steps[x] <= y <= steps[x+1])
这显然行不通。另外,我需要为每step
对单独的列表(它们实际上是数据框中的列)。不知道从这里去哪里。
你可以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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句