python - 如何从python numpy中的矩阵中获取 float

标签 python numpy matrix int pow

假设我在 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

在本例中,z2.0(而不是 matrix([[2.0]])),并且 2* *z 是 4.0。

关于python - 如何从python numpy中的矩阵中获取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361155/

相关文章:

python - numpy/pandas 矩阵乘法的多线程?

列表项的python连接组合

python - 如何在 Excel 文档中搜索特定单词并使用搜索结果构建新列

python - 将 conda 包安装到 google colab

python - ANARCI Python 2.7.13 - 引发 child_exception//OSError : [Errno 2]

matlab - 从矩阵的每一行中提取唯一元素 (Matlab)

c - 矩阵乘法有2种不同的方式(比较时间)

python - 多标签分类 ML-kNN 与 KNN

python - 在 numpy 上使用数组索引数组

python - 如何将 float32 解释为 numpy 中的四个 uint8?