ndarray是Numpy的核心,是一個N維數組對象,這裏的數組對象指的是通用的同構數據多維容器,由於同構,因此元素類型必須相同。python
note: 儘管不少地方稱其爲數組,可是實際上它就是代碼版的矩陣,即戴着「面具」的矩陣。數組
(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
方法 | 說明 |
---|---|
astype() | 修改dtype,既能夠直接接受dtype顯示轉換,也能夠接受其餘的ndarray來隱式地採用其它ndarray的dtype |
copy() | 建立一個副本 |
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
大小相同的ndarray之間的運算都會到元素級,大小不相同的ndarray之間的運算就會採用廣播的形式對象
note: ndarray與標量直接進行邏輯運算的時候會生成布爾型數組,這裏的邏輯運算符包括=、!=、>、-(取反)、<等,固然也能夠經過&、|鏈接多個運算表達式。blog
索引做用在ndarray的軸上,且一個索引只做用於一個軸。
Numpy中索引有四種,分別是基本索引、切片索引、布爾型索引和花式索引。本節全部例子都基於arr:
arr = [[1,2,3], [4,5,6], [7,8,9]]
基本索引就是整數索引,有兩種表示方式,第一種方式獨有,在前一個索引的結果上執行後一個索引
arr[index1][index2]... # 在arr[index1]結果上執行[index2]操做
第二種方式和切片索引相似,切片索引參考了Python的序列切片,它的功能比基本索引更強大,也能夠用來表示整數索引
arr[index1, index2, ...] arr[slice1, slice2, ...]
以上兩種索引都是沿着0軸,1軸,... 依次索引或切片。實際使用時,兩者能夠混用。舉個例子
arr[:2, 2]=[3 6]
布爾型索引就是使用布爾型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]]
和前面兩種索引不一樣的是,花式索引使用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]
通用函數都是元素級的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 | 各類邏輯運算 |