You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy报bitwise_and不支持输入类型,转float后仍无法匹配两数组

问题原因与解决方案

1. 报错的核心原因是运算符优先级错误

Python中按位与&的优先级远高于>、<这类比较运算符。你写的np.array(array2)>np.array(array3) & np.array(array2[1:])<np.array(array3[1:])实际执行顺序是先计算np.array(array3) & np.array(array2[1:]),这两个输入都是float类型,而按位与运算本身就不支持float类型输入,和你手动转float的操作无关。

2. 存在数组长度不匹配的隐患

alfa_2函数中array2[1:]、array3[1:]是切片后的数组,长度比原数组少1,直接和完整长度的原数组做运算,哪怕解决了优先级问题,后续也会触发长度不匹配的报错。

3. 存在语法错误

你写的跨行entry_rules表达式没有用括号包裹整段逻辑,Python会默认上一行结尾就结束表达式,直接运行会报语法错误。


修复后代码示例

import numpy as np

def alfa_1(array1):                 
    return np.array(array1) >= 0

def alfa_2(array2,array3):
    arr2 = np.array(array2)
    arr3 = np.array(array3)
    # 所有比较条件加括号避免优先级问题,同时统一数组长度,可根据实际业务调整切片逻辑
    cond1 = arr2[:-1] > arr3[:-1]
    cond2 = arr2[1:] < arr3[1:]
    return cond1 & cond2

# 跨行逻辑用括号包裹避免语法错误
entry_rules = (
    alfa_1(df_indicators2['12 26 9'].astype('float'))[:-1]
    & alfa_2(df_indicators2['12 26 9'].astype('float'), df_indicators2['12 26 9'].astype('float'))
)

如果你的业务逻辑不需要对数组做切片,直接删除alfa_2和alfa_1调用时的切片即可。


内容的提问来源于stack exchange,提问作者user15606993

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:39:00