【问题标题】:Why I am getting index 0 is out of bounds for axis 0 with size 0? [duplicate]为什么我得到索引 0 超出了轴 0 大小为 0 的范围? [复制]
【发布时间】:2019-11-09 17:53:59
【问题描述】:

我正在尝试让我的函数通过电子表格检查每隔 3 列并找到某些值的位置(行号),但它只能部分工作。代码运行并返回一些值,但我收到此错误消息并停止。

我使用 start=mm[0] 从数组中获取第一个值,使用 end=mm[-1] 获取最后一个值。

def get_voltageStatus(r,t):
    for i in range (1,len(data[0]),3):
        m=np.where((data[1:,i]>=r) & (data[1:,i]<=t))
        mm_raws = []
        mm=m[0]
        start=mm[0]
        end=mm[-1]
        print(data[0,i])
        duration(start,end)

错误是:

start=mm[0] IndexError: 索引 0 超出轴 0 大小的范围 0

【问题讨论】:

  • data 中没有值介于rt 之间,因此m[0] 为空。
  • 当我们调用函数时,r 和 t 正在其他地方输入
  • 如果 size 为 0,则没有元素,因此 0 是无效索引。换句话说,错误消息已经涵盖了这一点。请注意,您正在查看 m[0][0] 并且这使用了很难测试/重现的全局变量。

标签: python arrays indexing


【解决方案1】:

这解决了问题

def get_voltageStatus(r,t):
    all=[]
    for i in range (1,len(data[0]),3):
        m=np.where((data[1:,i]>=r) & (data[1:,i]<=t))
        print(i)
        mm_raws = []
        mm=m[0]
        if mm.any():
            start=mm[0]
            end=mm[-1]
            print(data[0,i])
            temp=duration(start,end)
            all.append([data[0,i],temp])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 2020-04-24
    • 2018-02-12
    • 2022-01-13
    • 2019-04-01
    • 2021-11-03
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多