假设我有一个python矩阵,如下所示:
>>> xn
matrix([[ 1.99995048],
[ 3.99999329],
[ 2. ]])
现在我想得到元素[2][0] 那么
>>> z=xn[2][0]
>>> z
matrix([[ 2.]])
结果是“矩阵”。我想用这个数字做另一个运算,比如说2^z,但是由于z是“矩阵”,我得到了这个:
>>> 2**z
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'matrix'
我怎样才能使z仅为z=2(在这种情况下)? 提前谢谢。 /骑师
更新: 我找到了!
>>> z=xn.tolist()[2][0]
这是不应该使用
matrix
的众多原因之一。(或者,如果你愿意的话,至少要非常清楚为什么要使用它。)使用
numpy.matrix
强制所有内容都是二维的此外,
matrix
将**
运算符重载为矩阵幂(例如,x.dot(x)
表示x**2
)。因此,如果x
是矩阵,则2**x
没有意义。(如果x
是一个数组,则会这样!)只需使用
numpy.array
而不是numpy.matrix
。在这种情况下:
在这种情况下,
z
是2.0
(而不是matrix([[2.0]])
),而2**z
是4.0。要访问矩阵
xn
第0列第2行的元素,请使用xn[2, 0]
(而不是xn[2][0]
):如果您不想像Joe建议的那样使用
numpy.array
(例如,您可能需要一些仅在矩阵类型上的特殊方法),那么将元素从1元素矩阵中取出的最佳方法是使用.item
方法:相关问题 更多 >
编程相关推荐