假设我在 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
。
在这种情况下:
import numpy as np
xn = np.array([[ 1.99995048], [ 3.99999329], [ 2. ]])
z = xn[2, 0] # Or "xn[2][0]", they're equivalent.
print z
print 2**z
在本例中,z
为 2.0
(而不是 matrix([[2.0]])
),并且 2* *z
是 4.0。
关于python - 如何从python numpy中的矩阵中获取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361155/