我正在嘗試將矩陣中的元素轉換為浮點數,希望輸出為 0.200,而不是 0.2?(例如,由于數值精度與 Matlab 中的不同,它會影響我想要的結果?當我嘗試 float() 時,我收到以下錯誤:“TypeError: only size-1 arrays can be convert to 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)
uj5u.com熱心網友回復:
您的變數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]])
- 所述
precision的3套的值被印刷用的精度三位數字 - 的
floatmode的'fixed'手段:
始終列印精確精度的小數位數,即使這會列印比唯一指定值所需的更多或更少的數字。
乘法注意事項
根據您的評論,您似乎想要實作的是矩陣和 的矩陣乘法。* 運算子是逐元素乘法。對于矩陣乘法,您需要使用.ABnp.matmul(np.matmul(B,A), B)
uj5u.com熱心網友回復:
float是內置函式,它應該回傳單個浮點數,所以當你輸入數字陣列時遇到錯誤,你應該使用.astype方法 ie:
import numpy as np
arr = np.array([1,2,3])
arr2 = arr.astype(float)
print(arr2)
輸出
[1. 2. 3.]
(注意.數字后的 s)
uj5u.com熱心網友回復:
正如另一個答案中所指出的,使用 C.astype(float) 進行轉換。
如果要列印 3 個小數位,請使用 set_printoptions:
np.set_printoptions(precision=3)
print(C)
uj5u.com熱心網友回復:
您可以使用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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336673.html
