python: too many indices for array

出现这个问题的主要是维度不匹配,也就是说,矩阵中的维度出现了冗余的情况,例如数据中的数据维度不统一,导致矩阵的维度变为(n,)的情况产生。例如:

一、数据中维度不同造成

在这里插入图片描述
在上述例子中,a和b数组的维度大小不同,很难从报错中找出原因,我们可以i通过打印出数组的维度来进行错误的排查,打印数组的shape属性。如果直接使用a数组进行操作,数据不会报错,但若是直接对b数组进行操作的话,会直接提示:

IndexError:too many indices for array

解决办法:
1、如果是数据中缺少了一个数据,则要对缺失的数据进行补充。
2、或者直接对缺少数据的位置进行填充。

二、数据正确,但输出维度错误为(n,)

这种错误是在处理强制类型转换时出现的错误,处理的数据为Python下的列表包含元组格式。
数据为:

[(267.5509948730469, 291.084228515625, 11.240452766418457, 13.544210433959961)
 (150.3182830810547, 259.44091796875, 12.44009780883789, 16.75090789794922)
 (91.14350128173828, 328.9704895019531, 10.981318473815918, 14.897537231445312)
 (338.835693359375, 299.373291015625, 12.476198196411133, 17.797473907470703)
 (344.9810791015625, 193.673583984375, 11.98410415649414, 11.975150108337402)
 (354.6512145996094, 359.43450927734375, 27.140830993652344, 42.62242889404297)
 (409.1153564453125, 201.28187561035156, 13.354283332824707, 15.6940698623657)
 (380.6131896972656, 263.0042419433594, 12.414006233215332, 12.733485221862793)
 (326.6883239746094, 330.28802490234375, 15.327856063842773, 17.74440574645996)
 (331.81524658203125, 274.5369567871094, 9.03543758392334, 14.969551086425781)
 (108.6290512084961, 245.4127655029297, 13.381732940673828, 11.332084655761719)
 (339.169677734375, 307.6337890625, 13.901567459106445, 15.312585830688477)]
 

直接将数据赋值给字符,并输出维度正确,但在代码中是另外一个函数的输出时,则判断输出的维度为(n,)这种格式,具体原因未知。但仍可以用重新遍历读取数据重新组合的方式进行数据的重构。

解决办法:
重新读取数据,然后再进行强制类型转换,location_array为输出的数据。

# 打印维度
print(location_array.shape)
>> (98,)

# 数据维度转换(98, ) -> (98, 4)
remove_nest_house_data = [list(data) for data in location_array]
data = np.array(remove_nest_house_data)
priint(data.shape)
>> (98,4)

此时,即可解决,有知道原因的,欢迎留言评论!

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绛洞花主敏明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值