NumPy簡介及使用

2021-10-03 13:14:53 字數 3466 閱讀 3791

numpy是乙個開源python科學計算庫,用於快速處理任意維度的陣列。

對於同樣的數值計算任務,使用numpy比直接使用python要簡潔、快速。

numpy中的陣列的儲存效率和輸入輸出效能遠優於python中等價的基本資料結構,

其能提公升的效能與陣列中的元素成正比。

numpy大部分**使用c語言寫的,在底層演算法在設計時就有優異的效能,

這使得numpy比純python**高效得多。

numpy最重要的乙個特點是n維陣列物件ndarray。它是一系列同型別資料的集合。

以0下標為開始進行索引,ndarray物件用於存放同型別元素的多維陣列。

建立陣列

建立一維陣列

import numpy as np

#傳入已有陣列,並使用np.array將其轉化為ndarray。

list1=[1,2,3,4]

onearray=np.array(list1)

t1=np.array([1,2,3])

#使用range生成序列

t2=np.array(range(10))

**#使用numpy自帶的arange**

t3=np.arange(0,10,2) #[0,2,4,6,8]

建立二維陣列

import numpy as np

list2=[[1,2],[3,4],[5,6]]

twoarray=np.array(list2)

常用屬性

#ndim陣列的維度

print(twoarray.ndim)

#陣列的形狀(行,列)

print(twoarray.shape)

#陣列的元素個數

print(twoarray.size)

調整陣列的形狀

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

#更改陣列形狀,返回乙個陣列,可以改變維數

four=four.reshape(3,2)

#將多維變為一維,order預設為『c』以行為主展開,'f'以列展開

five=four.reshape((6,),order='f')

#將陣列轉成list

a=np.array([4,35,6,26,7])

list_a=a.tolist()

numpy的資料型別

a=np.array([4,35,6,26,7],dtype=np.int16)

#獲取陣列中每個元素的位元組單位長度

print(a.itemsize)

#獲取資料型別

print(a,dtype)

#調整資料型別

f1=f.astype(np.int64)

陣列的運算是對陣列所有元素進行操作

不同形狀的多維陣列不能計算

行數或列數相同的一維陣列和多維陣列可以計算

行形狀相同會與每一行陣列對應位操作,列形狀相同同理。

一般列方向位0軸,行方向位1軸。

import numpy as np

a=np.arange(6).reshape(2,3) #[[1,2,3],[4,5,6]]

print(np.sum(a,axis=0)) #[5,7,9] axis=0列求和、axis=1行求和,sum不指定軸為全部的和

索引

#一維陣列索引與列表相同

#多維陣列

t1=np.arange(24).reshape(4,6)

#取第二行,**索引從0開始**

print(t1[1])或print(t1[1,:])

#從第二行開始所有行

print(t1[1:])或print(t1[1:,:])

#取不連續的行

print([0,2,3])或print([0,2,3],:)

#取整列前面行應為':',取不連續的值

print(t1([0,1,1],[0,1,3]))

陣列的數值修改

#以賦值的形式修改,**可以根據條件修改**

t[t<10]=0

#使用邏輯判斷,與或非&,|,~。

#三目運算np.where(condition,x,y)滿足條件輸出x,不滿足輸出y。

新增

a=n.arange(6).reshape(2,3)

#numpy.insert,給定索引插入,若為給定axis,則插入前陣列被展開成一維

a=np.arange(6).reshape(2,3)

print(np.insert(a,3,[11,12]))

print(np.insert(a,1,[11],axie=0)) #在第一行新增,有廣播機制,所以第一行全部被新增11

print(np.insert(a,1,11,axis=1)) #在第一列全部新增11 刪除

delete,若為給定axis,則插入前陣列被展開成一維。其他用法同insert

去重

#unique去重,包含return_index,return_inverse,return_counts三個屬性,

分別為新列表在舊列表的位置,舊列表在新列表的位置,去重陣列中元素在舊列表出現的次數

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

u=np.unique(a)

拼接

#concatenate直接拼接,stack垂直拼接(加維度)

a=np.arange(6).reshape(2,3)

b=np.arange(6).reshape(2,3)

print(np.concatenate((a,b),axis=0)

分割

使用split,hsplit,vsplit

a=np.arange(6).reshape(2,3)

b=np.max(a)

c=np.min(a,axis=1)

#還有maximum,munimum,mean、argmin

#cumsum(返回給定軸上的和)

print(a.cumsum(0)) #返回一行,所有列求和

建立乙個nan和inf,只有float能賦值nan

a=np.nan

b=np.inf

t=np.arange(24,dtype=float).reshape(4,6)

#判斷非零的個數

print(np.count_nonzero(t))

np[3,4]=np.nan #返回布林值

#**nan不等於本身,nan和任何數計算都結果為nan**,所以可以結合兩個方法判斷nan的個數

print(np.count_nonzero(t!=t))

Numpy使用簡介

numpy是乙個開源的python科學計算庫,即numerical python ndarray是n demensional array英文的縮寫。它是一種由同質元素組成的多維陣列。元素數量是事先準備好的,同質指的是所有的元素型別一致。ndarray資料型別由乙個叫dtype的numpy物件指定,每...

numpy及scipy的使用

把list a轉換為numpy 矩陣 np.array a np.array a,int32 numpy載入txt檔案裡面的矩陣 matrix np.loadtxt txt name,dtype i delimiter 將nparray裡面每個元素轉換為int型 nparray.astype int...

NSUserDefaults簡介及使用

nsuserdefaults類提供了乙個與預設系統進行互動的程式設計介面。nsuserdefaults物件是用來儲存,恢復應用程式相關的偏好設定,配置資料等等。預設系統允許應用程式自定義它的行為去迎合使用者的喜好。你可以在程式執行的時候從使用者預設的資料庫中讀取程式的設定。同時nsuserdefau...