簡體   English   中英

矩陣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]])
  • 3的precision設置要打印的值, 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.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM