同樣的一段代碼,在兩個python文件里面執行的結果不一樣,一個是按照列單位進行sum一個是所有元素進行sum;
1 def distCal(vecA, vecB): 2 return sqrt(sum(power(vecA - vecB, 2))) 3 4 from numpy import sum 5 arr1= mat(array([[9, 10], [11,12],[13,14]])) 6 arr2 = mat(array([[1,2], [3,4], [5,6]])) 7 dist = distCal(arr1, arr2)
搞了半天,最后想到了,是不是可能sum語義不同,python原生和numpy的兩個?一查,果然sum分兩種;
在第一個類文件里面(第二個類文件有一句: from numpy import *)添加from numpy import sum,一執行,結果一樣,都是對於所有數據進行算合計。
python里面這類情況很多,numpy里面封裝了很多python原生同名的操作,但是增加了很多處理,默認行為也和原生的不一致;所以使用的時候要小心。