大型高维Numpy数组索引选择异常问题排查
解决numpy数组索引报错的问题
从你给出的报错信息和np.shape(tickGroups)返回的(16130,)可以明确:这个tickGroups是一个一维的object类型numpy数组,这也是你用tickGroups[0, 0, 0]触发IndexError: too many indices for array的核心原因——一维数组只支持单个索引来定位元素,无法识别三个维度的索引。
你的数组结构拆解
tickGroups[:]返回整个数组:因为是一维数组,切片[:]会返回全部元素tickGroups[0]:取一维数组的第一个元素,这个元素本身又是一个包含字典的object数组tickGroups[0][0]:进一步取这个子数组里的第一个字典元素,也就是{'price': 239.99, 'size': 1, 'tick': 0, 'sizeInBTC': 0.004166840285011875}
获取第一个price值的正确方式
你可以通过逐层索引+字典键访问来拿到目标值:
# 链式一步获取 first_price = tickGroups[0][0]['price'] print(first_price) # 输出 239.99
或者分步拆解,逻辑更清晰:
# 1. 取外层一维数组的第一个元素(内部的字典数组) inner_array = tickGroups[0] # 2. 取内部数组的第一个字典元素 target_dict = inner_array[0] # 3. 从字典中提取price值 first_price = target_dict['price']
补充说明
你可能误以为这是一个三维numpy数组,但实际上numpy只把最外层识别为一维,内部的数组/字典都被当作object类型的元素存储,不会被numpy解析为额外的维度。所以必须通过逐层索引的方式访问内部元素,再操作字典来获取对应的值。
内容的提问来源于stack exchange,提问作者James Chen
相关产品推荐
相关产品推荐

