使用anaconda或者intel的高效能python distribution安裝。預設numpy已經鏈結mkl。
export omp_num_threads=n
n對應物理核心數為佳,如果**寫的不夠好可以酌情加到超執行緒後邏輯核心數。
如:i7 6800k,6核12執行緒。純高效能計算n設定為6,如果操作的不是連續記憶體可以最大設定到12。
# norm
import numpy as np
norm_val = np.norm(a)
使用庫函式遠比手寫表示式簡單快速,特別是鏈結了blas後效能超過c手寫迴圈甚至分治法。因為blas庫往往能夠很好地根據矩陣選擇合適的演算法,加入simd,cache優化等tricks。
例如:
a = np.random.rand(10,20,30) #10x20x30 matrix
print(a[a>0.5])
這樣遠比用迴圈速度快。
目標函式: f(
x)={
xx2x
<
0.50.5≤x
import numpy as np
x = np.random.rand(2000)
np.vectorize(lambda x:x if x<0.5
else x** 2.0)(x)
#1000 loops, best of 3: 188 µs per loop
f = lambda x: x if x<0.5
else x ** 2.0
np.fromiter((f(xi) for xi in x),x.dtype,count=len(x))
#1000 loops, best of 3: 237 µs per loop
np.where(x<5,x,x**2.0)
# 100000 loops, best of 3: 3.9 µs per loop
np.array(map(f,x))
# 1000000 loops, best of 3: 1.32 µs per loop
np.array([f(xi) for xi in x])
# 1000 loops, best of 3: 238 µs per loop
利用numpy訪問檔案
int rat int roatents rat 此式中 不是位址運算子,而是型別表示符,roatents是rat的別名,他們指向相同的值和記憶體單元,改變 roatents的值,rat也會變。roatents是乙個引用變數 int prats rat prat是指標 roatents prats可...
python 利用numpy進行資料分析
一 numpy.loadtxt讀取資料 data numpy.loadtxt 資料路徑.txt delimiter usecols 0,1,2,3 dtype float 讀取後是多元陣列格式 然後利用陣列的特徵獲取不同列 value data 0 3 classfiy data 4 引數useco...
利用Python進行資料分析 Numpy 基礎
ndarray 多維陣列 ndarray 每個陣列元素必須是相同型別,每個陣列都有shape和dtype物件。shape 表示陣列大小 dtype 表示陣列資料型別 如何建立乙個陣列?in 1 import numpy as np in 2 data 1,2,3,4,5,6,7 in 3 arr n...