Numpy入門

1. ndarray——戴着「面具」的矩陣

ndarray是Numpy的核心,是一個N維數組對象,這裏的數組對象指的是通用的同構數據多維容器,由於同構,因此元素類型必須相同。python

note: 儘管不少地方稱其爲數組,可是實際上它就是代碼版的矩陣,即戴着「面具」的矩陣。數組

1.1 屬性

(1)shape: 表示ndarray各維度大小的元組less

(2)dtype: ndarray元素的數據類型ide

類型 類型代碼
int八、uint8 i一、u1
int1六、uint16 i二、u2
int3二、uint32 i四、u4
int6四、uint64 i八、u8
float1六、float3二、float6四、float128 f二、f四、f八、f16
bool ?
object O
string_ S
unicode_ U

note: object表示python對象類型;長度爲10的字符串表示爲S10函數

(3)ndim: ndarray的軸數/維數ui

1.2 方法

方法 說明
astype() 修改dtype,既能夠直接接受dtype顯示轉換,也能夠接受其餘的ndarray來隱式地採用其它ndarray的dtype
copy() 建立一個副本

2. 建立ndarray

Numpy中提供了不少方法來建立一些特殊的矩陣。spa

函數 說明
array() 接受一個序列,將其轉換爲ndarray。矩陣的元素的類型會自動匹配,也能夠顯示指定
asarray() 將輸入轉換成ndarray
arange() 相似於range(),建立一個一維的ndarray
ones(shape, dtype=None) 建立全1矩陣
zeros(shape, dtype=None) 建立全0矩陣
empty(shape, dtype=None) 建立指定shape的隨機矩陣
eye(row, col=None, dtype=float) 建立單位矩陣,當row<col時建立的僞單位矩陣
identiy(n, dtype=None) 建立n*n的單位矩陣,這纔是貨真價實的單位矩陣

note: 和ones()/zeros()/empty()是三個須要指定shape的建立方法不一樣,ones_like()/zeros_like()/empty_like()根據其餘矩陣的shape來建立對應矩陣code

3. ndarray的運算

大小相同的ndarray之間的運算都會到元素級,大小不相同的ndarray之間的運算就會採用廣播的形式對象

note: ndarray與標量直接進行邏輯運算的時候會生成布爾型數組,這裏的邏輯運算符包括=!=>-(取反)、<等,固然也能夠經過&|鏈接多個運算表達式。blog

4. 索引和切片

索引做用在ndarray的軸上,且一個索引只做用於一個軸。

Numpy中索引有四種,分別是基本索引、切片索引、布爾型索引和花式索引。本節全部例子都基於arr:

arr = [[1,2,3],
       [4,5,6],
       [7,8,9]]

4.1 基本索引和切片索引

基本索引就是整數索引,有兩種表示方式,第一種方式獨有,在前一個索引的結果上執行後一個索引

arr[index1][index2]...    # 在arr[index1]結果上執行[index2]操做

第二種方式和切片索引相似,切片索引參考了Python的序列切片,它的功能比基本索引更強大,也能夠用來表示整數索引

arr[index1, index2, ...]
arr[slice1, slice2, ...]

以上兩種索引都是沿着0軸,1軸,... 依次索引或切片。實際使用時,兩者能夠混用。舉個例子

arr[:2, 2]=[3 6]

4.2 布爾型索引

布爾型索引就是使用布爾型ndarray來索引目標ndarray,好比target_arr[bool_arr],此時布爾型ndarray必須與目標ndarray被索引的軸的軸長相等。很好理解這裏不給例子了。

布爾型索引至關於另外一種形式的基本索引,因此三者能夠混用

import numpy as np

name = np.array(['jack','bob','jack'])
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])

arr[name == 'jack', :2] = 
[[1 2]
 [7 8]]

4.3 花式索引

和前面兩種索引不一樣的是,花式索引使用list或者ndarray抽取數據到新ndarray中

arr[[1,2], [1,2]] = [5 9]

note: 前一個[1,2]做用於0軸,抽出[[4,5,6],[7,8,9]],後一個[1,2]做用於1軸,分別抽取5和9出來組成[5,9]

5. 通用函數

通用函數都是元素級的ndarray函數,位於numpy下。按照所需ndarray的數量,分爲一元函數和二元函數,使用時經過np.func(arr, ...)來調用

一元函數

函數 說明
abs、fabs 計算各元素的絕對值,計算非複數值fabs()更快
sqrt 計算各元素的算術平方根
square 計算各元素的平方
exp  
log、log十、log二、log1p 最後一個1p是(1+x)的簡稱
sign 1(正數)、0(零)、-1(負數)
ceil 計算大於等於各元素的最小整數
floor 計算小於等於各元素的最大整數

二元函數

函數 說明
add  
substract  
multiply  
divide、floor_divide floor_divide只取商
power  
maximum/minimum  
mod 取餘
copysign 將第二個ndarray的元素的符號賦給第一個ndarray的元素
greater、greater_equal、less、less_equal、equal、not_equal 各類比較運算
logical_and、logical_or、logical_xor 各類邏輯運算
相關文章
相關標籤/搜索