2016-11-13 22 views
0

2枚のプリントで異なる結果が得られたのはなぜですか?彼らは同じではないでしょうか?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配列を使用するときにループを行う必要がないため、多くの種類のデータ処理タスクを、ループの作成が必要な簡潔な配列式として表現できます。明示的なループを配列式に置き換えるこの練習は、一般にベクトル化と呼ばれます。一般に、ベクトル化された配列演算は、純粋なPythonの同等物より1〜2倍(あるいはそれ以上)高速であることが多く、あらゆる種類の数値計算に最も大きな影響を与えます。だから、

、次のようにあなたのコードを書き換えることが念頭に置いてこのすべてを維持する:

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 
関連する問題