IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

运行代码发现了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去改变数组的形状来解决这个问题。

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值