2016-05-09 101 views
2

我對我看到的一些輸出感到困惑。Python:numpy數據類型鑄造

如果p花車的列表,之間有什麼區別:

input = np.array([p]).astype('f') 

input = np.array([p],float) 

如果我使用第二個選項,然後執行打印(輸入),我總是得到的東西,如:

[陣列([ - 0.662,0.246,1.029])]

但是,如果我用的是杉木st選項,有時我會得到: [[0.61900002 1.71300006 2.16899991]]

但其他時間我得到[array([])]窗體。

回答

3

這裏的解釋是:

In [217]: np.array([1.1,1.2,1.3]).astype('f') 
Out[217]: array([ 1.10000002, 1.20000005, 1.29999995], dtype=float32) 

In [218]: np.array([1.1,1.2,1.3]).astype('float') 
Out[218]: array([ 1.1, 1.2, 1.3]) 

In [219]: np.array([1.1,1.2,1.3]).astype(float) 
Out[219]: array([ 1.1, 1.2, 1.3]) 

類型:

In [220]: np.array([1.1,1.2,1.3]).astype(float).dtype 
Out[220]: dtype('float64') 

In [221]: np.array([1.1,1.2,1.3]).astype('f').dtype 
Out[221]: dtype('float32') 

所以你將不得不使用np.array([p], 'f')相同的結果:

In [224]: np.array([1.1,1.2,1.3],'f') 
Out[224]: array([ 1.10000002, 1.20000005, 1.29999995], dtype=float32) 
+0

謝謝,MaxU,我看到的那一部分不同之處在於float32和float64的關係,但是你能解釋爲什麼有時候我會得到:[[0.61900002 1.71300006 2.16 899991]],當我執行print()命令時,沒有「array」出現? –