[英]Creating a matrix such that each element is a quaternion in python
[英]Float of each element in a matrix python ::
我正在嘗試將矩陣中的元素轉換為浮點數,希望輸出為 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)
您的變量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
設置要打印的值, precision
為三位數'fixed'
的floatmode
意味着:始終打印精確精度的小數位數,即使這會打印比唯一指定值所需的更多或更少的數字。
根據您的評論,您似乎想要實現的是矩陣A
和B
矩陣乘法。 * 運算符是逐元素乘法。 對於矩陣乘法,您需要使用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.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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.