我正在将float转换为numpy数组,但是无法这样做。我得到的错误是
IndexError:仅整数,slice(:),省略号(...),numpy.newaxis(None)和整数或布尔数组为有效索引
我曾尝试将整个数组(TD)转换为浮点数,但是无法这样做 full_x[start_evt_ind:(start_evt_ind + num_events)] = x
full_y[start_evt_ind:(start_evt_ind + num_events)] = y
full_p[start_evt_ind:(start_evt_ind + num_events)] = evt_subtype
full_ts[start_evt_ind:(start_evt_ind + num_events)] = ts
full_f[start_evt_ind:(start_evt_ind + num_events)] = evt_type
start_evt_ind = start_evt_ind + num_events
TD=np.rec.array(None, dtype=[('x', np.float32), ('y', np.float32), ('p', np.bool_), ('ts', np.float32)], shape = (len(full_x[TD_indices])))
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息和代码片段,问题似乎出在尝试使用非整数类型的索引去访问或构建numpy数组。具体到您的情况,错误可能发生在TD=np.rec.array(..., shape = (len(full_x[TD_indices])))
这一行。
这里有几个可能的解决方向:
确保索引是整数:看起来TD_indices
可能不是整数数组或者其用法不正确。请确认TD_indices
确实是一个包含整数值的数组或序列,并且它被用来获取full_x
的有效长度,而不是直接作为索引传递给numpy数组。
直接转换数据类型:如果您原本的目标是将某些浮点数数据转换为numpy数组,而不仅仅是创建一个结构化数组(如您示例中的np.rec.array
),那么可以直接使用numpy的astype方法来转换现有数据的类型,例如:
float_array = your_data.astype(np.float32)
这里your_data
应替换为实际需要转换的数据。
正确构造结构化数组:如果您的目标确实是创建一个结构化的numpy数组,并且TD_indices
是用来确定新数组大小的,那么应该先计算出正确的长度(确保这个计算结果是整数),然后用该长度来定义shape,而不是直接用full_x[TD_indices]
。例如,如果TD_indices
是您想保留的元素的索引集合,您应该首先基于这些索引来提取数据,再转换成结构化数组。
修正索引逻辑:如果start_evt_ind
和num_events
用于界定数据段,确保它们的计算和使用方式能够生成有效的整数范围,避免了任何可能导致非整数索引的情况。
综上所述,建议您检查并调整索引逻辑,确保所有涉及数组索引的地方都使用了正确的整数值。同时,明确您的目标是直接转换数据类型还是构造特定结构的numpy数组,从而采取相应的处理步骤。