运行代码发现了IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed这个报错,
后来去百度发现是这段代码出了问题
tp, fp, precision_all, strResults, f1_all, acc_all, mcc_all = calculate_performance(y_val, y_predict_cv, 'val')
因为定义的calculate_performance里面要求的数据是有两个索引,但是这些数据是一维的,所以才会报这个错误。后来学习发现了.reshape这个用法改变数组的形状。reshape(-1,1)是将一维数据在行上变化,而reshape(1,-1)是将一维数据在列上变化。这里-1是指未设定行数,程序随机分配,所以这里-1表示任一正整数,所以reshape(-1,1)表示(任意行,1列)
下面举个具体的例子:
import numpy as np
a=np.array([[1,2,3],[4,5,6]]) #定义一个两行三列的数组
print(a)
b=a.reshape(-1,1) #将a数组改编为一行任意列的数组
print(b)
c=a.reshape(1,-1) #将a数组改编为任意行一列的数组
print(c)
输出的对应结果为
[[1 2 3]
[4 5 6]]
[[1]
[2]
[3]
[4]
[5]
[6]]
[[1 2 3 4 5 6]]
以上方法完美的解决了这个错误,所以当我们遇到需要改变数组的形状时,可以巧妙的去运用reshape去改变数组的形状来解决这个问题。