Python中ndarray数组形状(n, )和(n, 1)的区别

本文探讨了Python中ndarray数组形状(n, )和(n, 1)的区别,通过实例展示了这两种形状在比较操作时的错误及原因。文章指出,(n, )是一维数组,(n, 1)是二维数组,它们在形状上的差异可能导致不期望的运算结果。同时,介绍了使用reshape和resize方法修改数组形状,强调reshape不会改变原数组,而resize会改变原数组。" 79087331,6205194,Golang加解密实战,"['Go', '加密算法', '数据安全']
摘要由CSDN通过智能技术生成

最近遇到了需要将两个数组进行比较的问题,原代码如下:

Distance = np.load('Distance.npy')    # 距离矩阵
index = np.argmin(Distance, axis=-1)  # 行方向上最小值索引
recog_rate = np.sum(index + 1 == recog_idx) / all_testnum    # 计算识别率

运行完识别率recog=3.0,显然,哪里出了问题

debug后发现,index是shape=(5874,)的ndarray类型,而recog_idx是shape=(5874,1)的ndarray类型,这样两个数组进行比较的过程就是,recog_idx[0,0](也就是[1])与index整个数组进行比较(np.sum的值为3),然后recog_idx[1,0](第二个元素[1])再与index整个数组进行比较(np.sum的值仍为3),依次进行下去,直到recog_idx中的每个元素都与index进行了比较。这与我想要的比较截然不同。

 下面看一下两个数组的详细信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值