標籤:des style blog http os io strong 資料
NumPy作為python科學計算的基礎,為何python適合進行數學計算,除了簡單易懂,容易學習
Python可以簡單的調用大量的用c和fortran編寫的legacy的庫
The NumPy ndarray: A Multidimensional Array Object
ndarray,可以理解為n維數組,用於抽象矩陣和向量
Creating ndarrays
最簡單的就是,從list初始化,
當然還有其他的方式,比如,
匯總,
Data Types for ndarrays
首先對於ndarray只能存放同一類型資料,
並且由於封裝了c和fortran的庫,大家的類型必須要統一,所以ndarrays支援如下類型,
那麼各種語言中的類型,都會統一對應到這些類型
ndarray支援顯式的類型轉換 (copy)
int轉float:
string轉float:
這個比較有用,並且可以看到這裡的類型寫的float,NumPy會自動將python的類型轉成ndarray支援的類型
Operations between Arrays and Scalars
對於ndarray裡面的elems的操作,是不需要自己寫for的
預設對於ndarray或shape相同的ndarray之間的操作,都是會遍曆每個element的,稱為vectorization,向量化
Basic Indexing and Slicing (View)
取出矩陣中的某些資料,或切分出子矩陣
對於一維向量,和python list操作基本是一致的,最大的區別,是ndarray的slicing不會copy,而是view,即你更改slicing,就相當於更改了未經處理資料
可以看到更改arr_slice同樣會影響到arr,這樣做的原因是,由於經常會操作很大的矩陣,copy會低效,所以預設是不copy的
當然你可以顯式的copy,arr[5:8].copy()
二維的,參考,
Boolean Indexing
這個比較有特點,
對於普通的index,arr[2],這裡是指定index第二個
如果我要index多個,並且不連續,怎麼辦?
其實你可以用一個boolean indexing來一一指定是否需要取出
比如,arr[[True, False, True,False]]
一般不會手工參數這樣的boolean indexing,會通過一些條件判斷得到
然後你把boolean indexing代入arr就可以取出標為True那維資料
所以必須保證boolean indexing的維數和矩陣中的對應的維數是一樣的
比如,
arr[[True, False, True,False]]
必須保證arr是4行的
其實每一維都是可以加上條件過濾的,比如,行選names==Bobs,列選第3列
除了在維度層級進行選擇,還能對每個elem進行過濾
比如把data中,所有小於0的,都設為0
Fancy Indexing
Fancy indexing is a term adopted by NumPy to describe indexing using integer arrays.
和普通的indexing, arr[3], 不同在於,可以指定多個,並且按照指定的順序返回
選取第4,3,0,6行
注意底下兩種的區別,
相當於,取(1, 0), (5, 3), (7, 1), and (2, 2)
行,選取1,5,7,2
列,全選,換順序
Transposing Arrays and Swapping Axes
轉置,transposing
arr.T
其實轉置是swapaxes的特殊版本,這個可以指定swap哪兩個維度
arr.swapaxes(0, 1)
Universal Functions: Fast Element-wise Array Functions
這個上面在基本ndarray計算的時候已經介紹過,這裡匯總一下
這種vectorized操作分為一元和二元的,
Data Processing Using Arrays
Expressing Conditional Logic as Array Operations
vectorized可以用於簡化for迴圈,那麼if-else可以簡化嗎?
numpy.where function is a vectorized version of the ternary expression x if condition else y
np.where(cond, xarr, yarr) 等同於 cond?xarr:yarr
並且,這個還可以嵌套,即如果if…elseif…..elseif……else…
Mathematical and Statistical Methods
Methods for Boolean Arrays
any和all
Unique and Other Set Logic
File Input and Output with Arrays
Storing Arrays on Disk in Binary Format (.npy)
壓縮儲存,並指定別名 (.npz)
Saving and Loading Text Files
Linear Algebra
Random Number Generation