如何在python numpy中从矩阵中获取浮点

2024-04-29 01:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个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]

Tags: in元素moststdinline矩阵数字call
3条回答

这是不应该使用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

在这种情况下,z2.0(而不是matrix([[2.0]])),而2**z是4.0。

要访问矩阵xn第0列第2行的元素,请使用xn[2, 0](而不是xn[2][0]):

In [12]: xn = np.matrix([[2.0],[3.0],[1.5]])

In [13]: xn
Out[13]: 
matrix([[ 2. ],
        [ 3. ],
        [ 1.5]])

In [14]: z = xn[2, 0]

In [15]: z
Out[15]: 1.5

In [16]: type(z)
Out[16]: numpy.float64

In [17]: 2**z
Out[17]: 2.8284271247461903

如果您不想像Joe建议的那样使用numpy.array(例如,您可能需要一些仅在矩阵类型上的特殊方法),那么将元素从1元素矩阵中取出的最佳方法是使用.item方法:

>>> xn[0]
matrix([[ 1.99995048]])
>>> xn[0].item()
1.99995048

相关问题 更多 >