2016-11-13 168 views
0

我想知道爲什麼我在兩個打印中得到不同的結果?他們不應該是一樣的嗎?Python numpy矩陣賦值

import numpy as np 

    x = np.array([[1.5, 2], [2.4, 6]]) 

    k = np.copy(x) 
    for i in range(len(x)): 
     for j in range(len(x[i])): 
      k[i][j] = 1/(1 + np.exp(-x[i][j])) 
      print("K[i][j]:"+str(k[i][j])) 
      print("Value:"+str(1/(1 + np.exp(-x[i][j])))) 

回答

0

我剛剛用python3和python2運行你的代碼,結果是完全一樣的。 此外,使用numpy數組時,不必循環使用numpy數組,可以將多種數據處理任務表示爲可能需要編寫循環的簡潔數組表達式。 用數組表達式代替顯式循環的這種做法通常被稱爲矢量化。一般而言,向量化數組操作通常比其純Python等效物快一個或兩個(或更多)數量級,在任何類型的數值計算中都會產生最大的影響。

因此,保持這一切記住,你可以重寫代碼如下:

import numpy as np 

x = np.array([[1.5, 2], [2.4, 6]], dtype=np.float) 
k = 1/(1 + np.exp(-x)) 
0

當我運行這個腳本,2打印顯示相同的結果。這個python是3.5.2。

K[i][j]:0.817574476194 
Value:0.817574476194 
K[i][j]:0.880797077978 
Value:0.880797077978 
K[i][j]:0.916827303506 
Value:0.916827303506 
K[i][j]:0.997527376843 
Value:0.997527376843