Python 合并两个矩阵时出现TypeError:只能将整数标量数组转换为标量索引

Python 合并两个矩阵时出现TypeError:只能将整数标量数组转换为标量索引,python,numpy,matrix,Python,Numpy,Matrix,我有两个功能: 创建一个恒等矩阵 当我运行最后一个函数来计算2矩阵时,它显示了错误: File "C:/Users/JJ/OneDrive - ISCTE-IUL/EDA/Aula1.py", line 139, in inverted_matrix x = numpy.concatenate(m,m_ident(m)) 文件“”,第6行,串联 TypeError:只有整数标量数组可以转换为标量索引您需要将列表/序列作为第一个参数传递给,而第二个参数是数组将沿其连接的轴。因

我有两个功能:

创建一个恒等矩阵 当我运行最后一个函数来计算2矩阵时,它显示了错误:

File "C:/Users/JJ/OneDrive - ISCTE-IUL/EDA/Aula1.py", line 139, in inverted_matrix
x = numpy.concatenate(m,m_ident(m))
文件“”,第6行,串联
TypeError:只有整数标量数组可以转换为标量索引

您需要将列表/序列作为第一个参数传递给,而第二个参数是数组将沿其连接的轴。因此,您只需将代码更改为:

def倒置矩阵(m):
如果np.linalg.det(m)==0:
返回错误
x=np.连接([m,m_ident(m)])
返回x
但是,请注意,
m_ident
正在更改
m
本身,而不是创建一个新的矩阵,因此您将得到两个串联的标识矩阵

要避免这种情况,您可以执行以下操作:

def m_ident(m):
    I = np.zeros(m.shape)
    for i in range(0,m.shape[0]):
       for j in range(0,m.shape[1]):
          if i == j:
             I[i,j] = 1
    return I

或者更好地使用。

欢迎使用StackOverflow。请花点时间阅读这篇文章,了解如何提供答案并根据答案修改您的问题。
串联
的第二个参数是
,一个数字,而不是另一个数组。将
numpy
参考资料放在手边。根据函数文档检查参数应该是调试的第一步。谢谢,我有一些问题。首先,当你做I=np.zero(m.shape)时,m.shape是什么?它是否同时给出了矩阵的行数和列数?矩阵m只是在变化,因为我返回了m,它存储了新的矩阵@fbruzzesyes,这与执行
I=np.zero((m.shape[0],m.shape[1]))是一样的。因为
m.shape
已经是一个元组,所以可以用这种方式传递它。更好的是,您可以使用as
np.zeros\u like(m)
,它的目的就是创建一个与给定数组形状相同的零数组。
def m_ident(m):
    I = np.zeros(m.shape)
    for i in range(0,m.shape[0]):
       for j in range(0,m.shape[1]):
          if i == j:
             I[i,j] = 1
    return I