简单NumPy比较产生的值错误

2024-06-25 23:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个python问题,我尝试了各种方法,但都无法修复它。你能给我一些提示吗?你知道吗

sp_step = np.linspace(0.0,2.0,41)  ####  bin size is 50 Kpc
for jj in range(len(sp_step) -1):
    if sp > sp_step[jj] and sp <= sp_step[jj+1]:
        stack_num[jj] += 1
        stack[jj] = map(add,stack[jj],flux_inteplt)

我定义了一个名为sp\u step的numpy数组,我要做的是使用变量sp来查找数据的哪一段,然后我将相应的数据进行堆栈。你知道吗

但上面说

if sp > sp_step[jj] and sp <= sp_step[jj+1]:

ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

我搜索了这个错误,试过了np.u和,但不起作用。你知道吗

谢谢。你知道吗


Tags: and数据方法sizeifbinisstack
1条回答
网友
1楼 · 发布于 2024-06-25 23:33:17

这是一个比较常见的问题。它是一些numpy测试产生多个值的结果,然后尝试在只需要一个值的Python上下文中使用这些值。你知道吗

看看这个表达式(打印结果)

sp > sp_step[jj] and sp <= sp_step[jj+1]

您可能需要添加一些()以确保在&and是Python期望标量布尔的运算符)之前执行这两个相等性测试。你知道吗

(sp > sp_step[jj]) & (sp <= sp_step[jj+1])

要与if一起使用,它必须只返回一个值。你知道吗

在测试numpy数组时,最好使用掩码而不是迭代。你知道吗

mask = (sp>sp_step) & (sp <= sp_step)
sp_step[mask] ...

一般来说,它比迭代更快,但是它需要重新思考问题。在任何情况下,ValueError都是多值numpy逻辑操作与标量Python逻辑操作混合的结果。你知道吗

相关问题 更多 >