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...