我想乘以矩阵AB。要获得向量Y, 其中A为3x4,B为4x1 x =范围(1,101) B = [2,x,3,x] 由于B包含变量x,我们将为Y获得100个不同的向量。我想将它们添加到列表中,以便稍后可以将这些向量用于计算。
这是我尝试过的,但收到错误消息
AB= list()
for x in range (1,100):
A = np.matrix('1 9 2 3; 7 2 1 4; 4 2 5 2')
B = ('2; x; 3; x')
AB.append(A @ B)
我在做什么错? 我得到的错误是:(指的是另一个文件)
raise ValueError('malformed node or string: ' + repr(node))
答案 0 :(得分:0)
好吧,首先,您忘记使B成为一个numpy矩阵,其次,您需要使用f字符串将x用作变量,而不是不兼容的字符x。
gradle
答案 1 :(得分:0)
创建数组的首选方法是:
In [146]: A = np.array([[1, 9, 2, 3],[7, 2, 1, 4],[4, 2, 5, 2]])
In [147]: A
Out[147]:
array([[1, 9, 2, 3],
[7, 2, 1, 4],
[4, 2, 5, 2]])
对于小型数组np.matrix
及其模仿的MATLAB构造函数,使用起来很方便,但通常不建议使用。
In [148]: x=3
In [149]: B = np.array([[2],[x],[3],[x]])
In [150]: B
Out[150]:
array([[2],
[3],
[3],
[3]])
# B = np.array([[2,x,3,x]]).T
In [151]: A@B
Out[151]:
array([[44],
[35],
[35]])
对于x
的多个值:
In [152]: x = np.arange(10)
In [153]: B = np.empty((4,x.shape[0]), int)
In [154]: B[[1,3]] = x
In [155]: B[0] = 2
In [156]: B[2] = 3
In [157]: B
Out[157]:
array([[2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
In [158]: A@B
Out[158]:
array([[ 8, 20, 32, 44, 56, 68, 80, 92, 104, 116],
[ 17, 23, 29, 35, 41, 47, 53, 59, 65, 71],
[ 23, 27, 31, 35, 39, 43, 47, 51, 55, 59]])