Python中获取矩阵行列号与维数的方法及常见错误排查
本文介绍在Python中如何使用shape、len和ndim属性查看矩阵的行列号、行数及维数。同时详细讲解通过pip安装numpy模块的步骤,并针对矩阵乘法中常见的维度对齐错误(如(4,)与(9,1)不对齐)进行排查分析,指出数据录入格式错误(如逗号误用)导致的计算失败及修正方法。
Python查看矩阵行列号与维数的方法
使用print(X.shape)可以查看矩阵的行列号。
使用print(len(X))可以查看矩阵的行数。
使用print(X.ndim)可以查看矩阵的维数。
1 查看矩阵的行列号

2 查看矩阵的行数

3 查看矩阵的维数

numpy模块安装与矩阵乘法注意事项
补充知识:Python之numpy模块的添加及矩阵乘法的维数问题
在Python中,numpy模块需要自行安装。大多数编程软件在安装时默认包含pip,因此可以利用pip命令进行安装。
具体操作为安装numpy模块。
首先打开电脑的命令提示符“cmd.exe”,界面如下图所示:

在命令行中输入“pip install numpy”,然后按回车键执行安装,过程如下图所示:

若为首次安装,屏幕会显示进度条。如图中所示,“Successfully installed numpy-1.14.5”表示已成功安装版本为1.14.5的numpy模块。
安装完成后,即可在编程中使用numpy模块。
关于矩阵乘法,numpy模块中通常使用dot()函数。需要注意的是,必须严格检查参与运算矩阵的维数,并保持细心。
以下代码在执行过程中会出现报错:
矩阵乘法维度报错排查与修正
import numpy as np
def nonlin(x,deriv=False):
if (deriv==True):
return x*(1-x)
return 1/(1+np.exp(-x))
#input dataset
x=np.array([[0.05, 0.07, 1.26, 51,128983, 37.180962, 149.0759784, 4.368080458, 1.0132, 24.4777],
[0.54, 0.18, 0.34, 30.83226759, 39.7490114, 12.70335148, 5.792655734, 4.66, 1.57],
[0.47, 0.95, 2.01, 38.01532298, 3.080286601, 89.59062789, 5.349154432, 1.05, 0.461],
[0.81, 1.06, 1.3, 77.882162, 59.17737344, 124.9541366, 5.259286248, 0.2105, 1.706]])
#output dataset
y=np.array([[15, 26, 33, 64]]).T
np.random.seed(1)
syn0=2*np.random.random((9,1))-1
for iter in range(10000):
l0=x
l1=nonlin(np.dot(l0,syn0))
l1_error=y-l1
l1_delta=l1_error*nonlin(l1,True)
syn0+=np.dot(l0.T,l1_delta)
print ("Outout after training:")
print (l1)
报错信息如图所示:

报错指向代码第30行“l1=nonlin(np.dot(l0,syn0))”,提示形状为(4,)与(9,1)的矩阵无法对齐。此时应打印矩阵l0和syn0的维数以确认问题。
在“l1=nonlin(np.dot(l0,syn0))”语句的前一行添加命令“print(l0.shape)”和“print(syn0.shape)”,如下图所示:

结果显示矩阵l0和syn0的维数分别为(4,)与(9,1)。要使矩阵乘法成立,l0的形状应为(4,9)。此处矩阵l0作为输入数据,对应变量x。
经排查发现,输入数据的第一行中,有一个数值的小数点被错误地输入为逗号。需要修正上述代码中的输入数据:
#input dataset
x=np.array([[0.05, 0.07, 1.26, 51,128983, 37.180962, 149.0759784, 4.368080458, 1.0132, 24.4777],
[0.54, 0.18, 0.34, 30.83226759, 39.7490114, 12.70335148, 5.792655734, 4.66, 1.57],
[0.47, 0.95, 2.01, 38.01532298, 3.080286601, 89.59062789, 5.349154432, 1.05, 0.461],
[0.81, 1.06, 1.3, 77.882162, 59.17737344, 124.9541366, 5.259286248, 0.2105, 1.706]])
修正后的数据如下:
#input dataset
x=np.array([[0.05, 0.07, 1.26, 51.128983, 37.180962, 149.0759784, 4.368080458, 1.0132, 24.4777],
[0.54, 0.18, 0.34, 30.83226759, 39.7490114, 12.70335148, 5.792655734, 4.66, 1.57],
[0.47, 0.95, 2.01, 38.01532298, 3.080286601, 89.59062789, 5.349154432, 1.05, 0.461],
[0.81, 1.06, 1.3, 77.882162, 59.17737344, 124.9541366, 5.259286248, 0.2105, 1.706]])
修改后,代码执行成功。
以上这篇python查看矩阵的行列号以及维数方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









