矩阵中每个元素的浮点数python::



我正在尝试将矩阵中的元素转换为浮点数,希望输出为0.200,而不是0.2 ?(作为数值精度是不一样的,在Matlab中,例如,它会影响我想要什么结果?当我尝试float()时,我得到了以下错误:TypeError:只有size-1的数组可以转换为Python标量">

任何帮助,我附上了代码:

import numpy as np
A=np.array([[ 0.0186428,  -0.0056,         -0.0056,          0,          0,
0],
[-.1263,  0.42087542, -.1263,          0,          0,
0],
[-.1263, -.1263, 0.42087542,  0,          0,
0],
[0,         0,          0,          0.2,        -0,
0        ],
[ 0,          0,          0,         -0,          0.2,
0        ],
[-0,         -0,          0,          0,          0,
0.2       ]])
B=np.array([[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,0,0],[0,0,0,1,0,0],[0,0,0,0,1,0], 
[0,0,0,0,0,1]])
C=B*A*B  # float(C) NOT working ?
print(C)

您的变量C已经是具有浮点值的numpy数组。您可以通过打印

自己检查。
In [23]: C.dtype
Out[23]: dtype('float64')

如果您想更改numpy数组打印到控制台的方式,您可以使用np.set_printoptions编辑设置。例如:

In [21]: np.set_printoptions(precision=3, floatmode='fixed')
In [22]: C
Out[22]:
array([[ 0.019, -0.000, -0.000,  0.000,  0.000,  0.000],
[-0.000,  0.421, -0.000,  0.000,  0.000,  0.000],
[-0.000, -0.000,  0.421,  0.000,  0.000,  0.000],
[ 0.000,  0.000,  0.000,  0.200,  0.000,  0.000],
[ 0.000,  0.000,  0.000,  0.000,  0.200,  0.000],
[ 0.000,  0.000,  0.000,  0.000,  0.000,  0.200]])
  • 3的precision设置要打印的值,精度为三位
  • 'fixed'floatmode表示:

始终精确打印小数位数,即使这样做输出多于或少于指定值所需的数字独特。

乘法注意事项

根据你的评论,似乎你想要实现的是矩阵AB矩阵乘法。*运算符是逐元素的乘法。对于矩阵乘法,您需要使用np.matmul(np.matmul(B,A), B)

float是内置函数,它应该返回单个浮点数,所以当你输入数字数组时遇到错误,你应该使用.astype方法,即:

import numpy as np
arr = np.array([1,2,3])
arr2 = arr.astype(float)
print(arr2)

输出
[1. 2. 3.]

(注.s在数字后)

正如在另一个答案中指出的那样,使用c.s astype(float)进行转换。

如果你想打印3位小数,使用set_printoptions:

np.set_printoptions(precision=3)
print(C)

可以使用np.around()来四舍五入/设置数组的精度,使用np.set_printoptions:

打印设置
...
A = np.around(A, 3)
B = np.around(B, 3)
C=B*A*B
np.set_printoptions(precision=3, floatmode="fixed")
print(C)

相关内容

  • 没有找到相关文章

最新更新