2

我正在尝试在 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 矩阵的限制,仅适用于非常大的矩阵(同上我在 Stack Exchange 上的 NumPy 矩阵上找到的问题。)

其他在线答案表明变量可以放入。

我可以尝试使用循环填充我的矩阵,但我知道这在计算上更昂贵。或者,编写额外的代码行来手动替换我想要切换的每个值(例如,从 1 或 0,标准矩阵函数之一)将是相当多的代码编写来制作我的矩阵......而且我有一个偷偷怀疑有更简单的方法。

1)有人可以解释这里的问题吗?和 2) 在 NumPy 中制作 6x6 矩阵(这是非标准的,因此填充了上面预定义的奇数值或变量)的快速且简单的方法是什么?

谢谢!

4

1 回答 1

4

你忘了外括号。

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]])

构造函数采用单个类似numpy.matrix数组的参数来初始化矩阵,而不是表示行的位置参数序列。(额外的位置参数设置诸如 dtype 之类的东西。)

于 2013-09-09T06:08:26.750 回答