天天看點

numpy-數組對象ndarray

Numpy是一個開源的Python科學計算基礎庫

1.一個強大的N維數組對象ndarray

2.廣播功能函數

3.整合c/c++/fortran代碼的工具

4.線性代數,傅裡葉變換,随機數生成等功能

NumPy是SciPy,Pandas等資料處理或科學計算庫的基礎

NumPy的引用:

import numpy as np#引入子產品的别名

N維數組對象:ndarray

import numpy as np

def npSum():

      a = np.array([0,1,2,3,4])

      b = np.array([9,8,7,6,2])

      c = a**2 + b**3

print(npSum())

數組對象可以去掉元素間運算所需要的循環,是得一維向量更像單個資料

設定專門的數組對象,經過優化,可以提升這類應用的運算速度

觀察:科學計算中,一個次元所有資料的類型往往相同。

ndarray是一個多元數組對象,由兩部分構成:

1.實際的資料

2.描述這些資料的中繼資料(資料次元,資料類型等)

3.ndarray數組一般要求所有元素類型相同(同質),數組下标從0開始

ndarray執行個體:

a = np.array([1,2,3,5,6],[2,3,4,2,2])

print(a)

np.array()生成一個ndarray數組

ndarray在程式中的别名是:array

np.array()輸出是[]形式,元素有空格分割

軸(axis):儲存資料的次元

秩(rank):軸的數量

ndarray對象的屬性

1 .ndim:秩,即軸的數量或者次元的數量

2 .shape:ndarray對象的尺度,對于矩陣,n行m列

3 .size:ndarray對象元素的個數,相當于.shape中n*m的值

4 .dtype:ndarray:對象元素類型

5 .itemsize:ndarray對象中每個元素的大小,以位元組為機關

ndarray的元素類型:

bool

intc

intp

int8

int16

int32

int64

uint8

uint16

uint32

uint64

float16

float32

float64

complex64

complex128

ndarray數組可以由一個非同質對象構成

非同質ndarray元素為對象類型

非同質ndarray對象無法有效發揮NumPy優勢,盡量避免使用

ndarray數組的建立方法

從Python中清單,元組等類型建立ndarray數組

使用NumPy中函數建立ndarray數組,如arange,onse,zeros等

從位元組流(raw bytes)中建立ndarray數組

從檔案中讀取特定格式,建立ndarray數組

(1)從Python中清單,元組或者清單和元組混合類型等類型建立ndarray數組

x = np.array(list/tuple)

x = np.array(list/tuple,dtype = np.float32)

當np.array()不指定dtype時,NumPy将根據情況關聯一個dtype類型

(2)使用NumPy中函數建立ndarray數組,如:arrange,ones,zeros等

函數:

np.arange(n):類似range()函數,傳回ndarray類型,元素從0到n-1

np.ones(shape):根據shape從一個全1數組,shape是元組類型

np.zeros(shape):根據shape從一個全0數組,shape是元組類型

np.full(shape,val):根據shape從一個數組,每個元素的值是val

np.eye(n):建立一個正方的n*n機關矩陣,對角線為1,其餘為0

函數:

np.ones_like(a):根據數組a的形狀生成一個全1數組

np.zeros_like(a):根據數組a的形狀生成一個全0數組

np.full_like(a,val):根據數組a的形狀生成一個數組,每個元素值都是val

函數:

np.linspace():根據起止資料等間距填充資料,行成數組

np.concatenate() :将連個或者多個數組合并成一個新的數組

對于建立後的ndarray數組,可以對其進行次元變換和元素類型變換

ndarray數組的次元變換

.reshape(shape):不改變數組元素,傳回一個shape形狀的數組,原數組不變

.resize(shape):與.reshape()功能一緻,單修改原數組

.swapaxes(ax1,ax2):将數組n個次元兩個次元揀選調換

.flatten():對數組進行降維,傳回折疊後的一個一維數組,原數組不變

ndarray數組的類型變換

new_a = a.astype(new_type)

astype()方法一定會建立新的數組(原始資料的一個拷貝)即使兩個類型一緻

ndarray數組操作:

索引和切片

一維數組的索引和切片:與Python的清單類似

a[1:4:2]:起始編号:終止編号(不含):步長 3元素冒号分割

多元數組索引

:選擇整個次元

每個次元切片方法與一維數組相同

數組運算

數組與标量之間的運算

數組與标量之間的運算作用于數組的每一個元素

a.mean()

NumPy一進制函數

對ndarray中的資料執行元素級運算的函數

函數:

np.abs(x) np.fabs(x):計算數組各元素的絕對值

np.sqrt(x) 計算數組各元素的平方根

np.square(x) 計算數組各元素的平方

np.log(x) np.log10(x) np.log2(x) 計算數組各元素的自然對數,10為底和2為底對象

NumPy資料存儲

csv檔案

np.savetxt(frame,array,fmt='%.18e',delimiter=None)

frame:檔案,字元串,或者産生器,可以是.gz或者.bz2壓縮檔案

array:存入檔案的數組

fmt:寫入檔案的格式

delimiter:分割字元串,預設是空格

np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=True):讀入資料

繼續閱讀