假设我有三个 numpy 数组:
a = np.array([8,2,10,10])
b = np.array([5,6,7,8])
c = np.array([9,10,11,12])
如果 a 在 b 和 c 之间,我想进行逐元素测试。如果是这样,则返回类似以下内容:
["Pass","Fail","Pass","Pass"]
最佳答案
通过 Pandas :
df=pd.DataFrame(data=[a,b,c]).T
df.columns=['a','b','c']
最后:
result=df['a'].between(df['b'],df['c']).apply(lambda x:'Pass' if x else 'Fail').values
现在如果你打印结果,你将得到你想要的输出:
array(['Pass', 'Fail', 'Pass', 'Pass'], dtype=object)
@user2357112 在评论中指出支持 Monica:
pandas.Series. Between 默认进行包含性“中间性”检查,因此 2 被认为是在 2 和 3 之间。如果您想要排他性检查,可以传递 inclusive=False
即:
result=df['a'].between(df['b'],df['c'],inclusive=False).apply(lambda x:'Pass' if x else 'Fail').values
注意:与 numpy 的 where()
方法相比,对于大数据/巨量数据来说,它的效率不高(速度方面),但它可以完成工作
关于python - 测试一个 numpy 数组是否位于数组 a 和 b 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67497121/