numpy庫和for迴圈效率比較:(原因分析在最後的鏈結中)
對於numpy的矩陣v,還可以使用np.log(v),np.abs(v),np.maximum(), v**2, 1/v等操作
import numpy as np
defmf
(x,y)
:return x **3+
2* x -
1if x > y else x *3+
8f = np.vectorize(mf)
a = np.random.randint(-10
,10,size=(6
,6))
result_array = f(a,
2)
a
array([[ -7, -6, -5, -2, 0, -5],
[ 5, 5, 0, 7, -2, -9],
[ -6, 3, -5, -6, -2, -8],
[-10, -5, 3, -6, 7, 5],
[ -9, -7, 5, 3, -2, 2],
[ -2, -2, 6, -6, 2, 9]])
result_array
原因: numpy是建立在對向量數**算進行了很多艱苦優化的低階庫之上的,它和for迴圈的內部細節不同,優化很複雜,參考乙個例子:fast inverse square root,更多原因參考:is using numpy faster than using for-loops to handle lists, and why?array([[-13, -10, -7, 2, 8, -7],
[134, 134, 8, 356, 2, -19],
[-10, 32, -7, -10, 2, -16],
[-22, -7, 32, -10, 356, 134],
[-19, -13, 134, 32, 2, 14],
[ 2, 2, 227, -10, 14, 746]])
原始碼分析foreach效率比for迴圈高
首先看看php原始碼變數值儲存 typedef union zvalue value str hashtable ht hash table value zend object value obj zvalue value php陣列的值儲存在zvalue value.ht裡面,它是乙個hashta...
mybatis exists 和in 的效率比較
這條語句適用於a錶比b表大的情況 select from ecs goods a where cat id in select cat id from ecs category 這條語句適用於b錶比a表大的情況 select from ecs goods a where exists select ...
is file和file exists效率比較
目前在弄檔案快取的時候用到了判定檔案存在與否,is file 還是file exists 呢?is file和file exists兩者效率比較起來,誰的執行速度更快呢?還是做個測試吧 12 3456 78910 1112 1314 1516 1718 1920 2122 23 start time...