出现这个问题的主要是维度不匹配,也就是说,矩阵中的维度出现了冗余的情况,例如数据中的数据维度不统一,导致矩阵的维度变为(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)
此时,即可解决,有知道原因的,欢迎留言评论!