Python 利用numpy高效能計算

2021-08-11 13:32:49 字數 1162 閱讀 3923

使用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...