當我將元組轉換為numpy時,存在資料準確性問題。代碼如下:
import numpy as np
a=(0.547693688614422, -0.7854270889025808, 0.6267478456110592)
print(a)
print(type(a))
tmp=np.array(a)
print(tmp)
結果是這樣的:
(0.547693688614422, -0.7854270889025808, 0.6267478456110592)
<class 'tuple'>
[ 0.54769369 -0.78542709 0.62674785]
請幫忙。
uj5u.com熱心網友回復:
一種方法是設定:
In [1039]: np.set_printoptions(precision=20)
In [1041]: tmp=np.array(a)
In [1042]: tmp
Out[1042]: array([ 0.547693688614422 , -0.7854270889025808, 0.6267478456110592])
In [1043]: tmp.dtype
Out[1043]: dtype('float64')
uj5u.com熱心網友回復:
我認為您只在顯示中看到截斷,但內部值仍然保持更高的準確性。這是我發現的:
>> a
(0.547693688614422, -0.7854270889025808, 0.6267478456110592)
>> b=np.array(a)
>> b
array([ 0.54769369, -0.78542709, 0.62674785])
>> b[0]
0.547693688614422
uj5u.com熱心網友回復:
這種看似差異應該只是數字的顯示方式,而不是它們的表示/存盤方式。
您可以檢查dtype以驗證它仍然是 float64
tmp.dtype # dtype('float64')
您可以調整np.set_printoptions以查看它們以不同方式顯示的值
print(tmp) # [ 0.54769369 -0.78542709 0.62674785]
np.set_printoptions(precision=18) # default precision is 8
print(tmp) # [ 0.547693688614422 -0.7854270889025808 0.6267478456110592]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485059.html
下一篇:用numpy泛化矩陣乘法
