Python 硬编码6x6 numpy矩阵的简单方法是什么?

Python 硬编码6x6 numpy矩阵的简单方法是什么?,python,numpy,matrix,scientific-computing,Python,Numpy,Matrix,Scientific Computing,我正在尝试用NumPy制作一个6x6矩阵: import numpy as np a = 0.01; c = 0.1; b = 1-c*a A = np.matrix([1,0,0,a,0,0],[0,1,0,0,a,0],[0,0,1,0,0,a],[0,0,0,b,0,0],[0,0,0,0,b,0],[0,0,0,0,0,b]) 它引发了一个错误: Traceback (most recent call last): File "<stdin>", line 1, in

我正在尝试用NumPy制作一个6x6矩阵:

import numpy as np
a = 0.01; c = 0.1; b = 1-c*a

A = np.matrix([1,0,0,a,0,0],[0,1,0,0,a,0],[0,0,1,0,0,a],[0,0,0,b,0,0],[0,0,0,0,b,0],[0,0,0,0,0,b])
它引发了一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __new__() takes at most 4 arguments (7 given)
我在文档中搜索了一下,它没有提到6x6矩阵的限制,只提到了非常大的矩阵,我在堆栈交换中找到的NumPy矩阵的问题也是如此

其他在线答案表明,这些变量可以输入

我可以尝试使用循环来填充我的矩阵,但我知道这在计算上更昂贵。或者,编写额外的代码行来手动替换我想要从1或0切换的每个值。例如,一个标准矩阵函数将需要大量的代码来生成我的矩阵……我暗自怀疑有一种更简单的方法

有人能解释一下这里有什么问题吗?和 2制作一个非标准的6x6矩阵,用上面NumPy中预定义的奇数值或变量填充,有什么快速简单的方法


谢谢

您忘记了外括号

A = np.matrix([[1,0,0,a,0,0],[0,1,0,0,a,0],[0,0,1,0,0,a],[0,0,0,b,0,0],[0,0,0,0,b,0],[0,0,0,0,0,b]])

矩阵构造函数采用单个类似数组的参数来初始化矩阵,而不是一系列表示行的位置参数。附加的位置参数设置数据类型。

您忘记了外括号

A = np.matrix([[1,0,0,a,0,0],[0,1,0,0,a,0],[0,0,1,0,0,a],[0,0,0,b,0,0],[0,0,0,0,b,0],[0,0,0,0,0,b]])

矩阵构造函数采用单个类似数组的参数来初始化矩阵,而不是一系列表示行的位置参数。其他位置参数设置数据类型。

尝试A=np。矩阵[[1,0,0,0,A,0],[0,1,0,0,0,A,0],[0,0,1,0,0,0,A],[0,0,0,0,b,0],[0,0,0,0,0,0,0,0,b]]有效;谢谢哈,这是一个简单的解决办法。我是否只需要对矩阵这样做,它说我给出了4个以上的参数?康纳:不,其他参数意味着其他东西。你应该始终使用外括号。试试A=np。矩阵[[1,0,0,A,0,0],[0,1,0,0,A,0],[0,0,1,0,0,0,A],[0,0,0,0,0,b],[0,0,0,0,0,0,0,0,0,b]]有效;谢谢哈,这是一个简单的解决办法。我是否只需要对矩阵这样做,它说我给出了4个以上的参数?康纳:不,其他参数意味着其他东西。您应该始终使用外支架。