python - 测试一个 numpy 数组是否位于数组 a 和 b 之间

标签 python pandas numpy

假设我有三个 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/

相关文章:

python - 在 tensorflow 0.12中使用MultiRNNCell

python - TypeError : src is not a numpy array, 既不是标量。无流

python - 通过指定行/列从现有矩阵创建新矩阵

python - 将时间列标题与 DataFrame Pandas 中行中的相应日期连接起来

python - Pandas 散点图日期时间

python - Pandas Groupby TimeGrouper 并应用

python - ndarray 的浅拷贝到函数

python - 在Python中从子模块访问父模块函数

python - 编译 Python 2.7.5 问题

python - 在 Flask-Mail 中自定义发件人?