共计 581 个字符,预计需要花费 2 分钟才能阅读完成。
GLM-4
首先,它不知道“智谱清言”是什么,哈哈
“有一个 dataframe,index 为整数,已经排序,所有值均为浮点类型,求其中两列,假设名为 a,b,它们是否相交,a 上穿 b 为 1,a 下穿 b 为 -1,无相交为 0,返回一个 series,使用 Numba 加速”
这段话,chatgpt3.5 给我的是代码,智谱清言给我的是计算结果……结果,就是它自己生成了一个 datframe 并计算了,把结果回答给我,很晕
chatgpt3.5 虽然给我的代码是错的,但受它启发,写了个简单函数完成了,这个函数是向量化的
def is_cross(arr:np.ndarray, arr_ref:np.ndarray)->np.ndarray:
'''
求两个 array 是否有相交 n
返回:一个 numpy arrayn
其中 0 表示没有相交,1 表示 arr 上穿 arr_ref,-1 则表示下穿 n
n
原理:求两个 array 的差并获取符号数列,求取这个符号数列相邻的差,再次获取这个差值数列的符号为返回结果 n
相邻符号如果相同差为 0,就是无相交;符号从 - 变 0/+,为上穿,差值为 +1/+2;符号从 + 变 0/-,为下穿,差值为 -1/-2n
符号从 0 变为有符号,性质一样,结果也符合需求 n
所以再次求取符号则为结果
'''
return np.sign(np.ediff1d(np.sign(arr-arr_ref), to_begin=0))
正文完