2016-11-13 910 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