求助:NumPy logical_and生成结果类型与预期不符问题
问题:NumPy逻辑运算结果格式不符合预期
我正在使用NumPy对DataFrame列数据执行逻辑运算,检查每行数值与前后行的差值绝对值是否均≤2。目前得到输出,但结果格式与预期不符。
代码示例
import pandas as pd import numpy as np ad = pd.DataFrame({'a':[1,3,4,6,7,5,9,10]}) op = np.array(np.logical_and.reduce([ad['a']. diff(x).abs().le(2) for x in [1,-1]])) print(op)
当前输出
[False True True True True False False False]
预期输出
[False, True, True, True, True, False, False, False]
解决方法
当前输出是NumPy数组的默认打印格式(空格分隔元素),要得到带逗号分隔的格式,有两种简单方式:
方式1:将NumPy数组转换为Python列表
调用数组的tolist()方法,直接转为Python列表后打印:
import pandas as pd import numpy as np ad = pd.DataFrame({'a':[1,3,4,6,7,5,9,10]}) op = np.array(np.logical_and.reduce([ad['a'].diff(x).abs().le(2) for x in [1,-1]])) print(op.tolist())
输出:[False, True, True, True, True, False, False, False]
方式2:用NumPy的array2string指定分隔符
使用np.array2string()方法,通过separator参数设置元素间的分隔符为, :
import pandas as pd import numpy as np ad = pd.DataFrame({'a':[1,3,4,6,7,5,9,10]}) op = np.array(np.logical_and.reduce([ad['a'].diff(x).abs().le(2) for x in [1,-1]])) print(np.array2string(op, separator=', '))
输出:[False, True, True, True, True, False, False, False]
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

