前言:
關於學習python,這幾年斷斷續續,學了停,停了學。我查過一些帖子,有人說直接做專案,在專案中學習;有人說打好基礎。我的性格可能是為了工作而工作,做專案可能會只對結果關心,當能出結果時,我便不會探索其中的知識點。所以,我準備從基礎開始,利用官網進行理論的學習,這篇文章是為了對python基礎理論知識進行學習和鞏固,希望通過堅實的理論知識能開啟向高階進化的大門。每天會努力抽時間寫**,作為自己的學習筆記,作為初學者我可能會對一些知識理解有不足之處,希望能有大佬指出錯誤。
工具:
1、利用anaconda 3 的jupyter notebook進行**的編寫
2、numpy官網社群,進行**學習。
目標:
1、numpy是什麼?
2、numpy能做什麼?
3、numpy如何應用?
學習:
屬性名功能
ndarray.ndim
獲取陣列的軸(維度)的個數
ndarray.shape
獲取陣列的維度
ndarray.size
獲取陣列元素的總數
ndarray.dtype
獲取陣列元素的型別
ndarray.itemsize
獲取陣列中每個元素的位元組大小
import numpy as np
data=np.arange(18)
.reshape(3,
6)print
("輸出陣列:"
)print
(data)
# 輸出自定義的陣列
print
("輸出陣列的維度個數:"
,data.ndim)
# 輸出陣列的維度個數
print
("輸出陣列的維度:"
,data.shape)
#輸出陣列的維度
print
("輸出陣列的元素總數:"
,data.size)
print
("輸出陣列的物件型別"
,data.dtype)
print
("輸出陣列的位元組大小"
,data.itemsize)
# 32/8=4
輸出結果:
輸出陣列:[[
0123
45][
6789
1011][
1213
1415
1617]]
輸出陣列的維度個數:
2輸出陣列的維度: (3,
6)輸出陣列的元素總數: 18
輸出陣列的物件型別 int32
輸出陣列的位元組大小 4
注意區分數## 標題組的維度個數data.ndim和陣列的維度data.shape;
一般建立陣列,我見的常用的是方法四,利用陣列範圍建立陣列
import numpy as np
# 建立陣列
# 方法一:利用array建立陣列
a=np.array([1
,2,6
,9,10
]) a1=np.zeros((3
,4))
a2=np.ones((3
,4))
a3=np.empty((2
,3))
#方法二:利用已有的列表或元組建立陣列x=[
1,2,
2,2,
6,8]
#將列表轉換成陣列
b=np.asarray(x)
x1=(1,
2,8,
9,6)
#將元組轉換成陣列
b1=np.asarray(x1)
x2=[(1
,2,3
),(4
,5,6
)]#將元組列表轉換成陣列
b2=np.asarray(x2)
#方法三: 動態陣列
# numpy.frombuffer(buffer,dtype=float,count=-1,offset=0) buffer可以是任意物件,會以流的形式讀入;count 讀取的資料數量,預設-1,讀取所有資料 offset讀取的起始位置
s=b'just do it'
c=np.frombuffer(s,dtype=
's1'
)print
(c)# 方法四:從陣列範圍建立陣列
# numpy.arange(start,stop,step,dtype)
d=np.arange(0,
10,2,dtype=
float
)#numpy.linspace(start,stop,num=50,endpoiint=true,retstep=false,dtype=none) num:生成等步長的樣本數量,預設50;
e=np.linspace(0,
10)
ndarray 物件的內容可以通過索引或切片來訪問和修改,與python中列表切片操作一樣
#陣列索引:獲取單個元素
x1[0
]#一維陣列:中括號從頭部指定索引獲取第i個值;利用負值獲取陣列的末尾索引
x1[-1]
x2[0,1
]# 二維陣列:用逗號分隔的縮影元組獲取元素
x3[1,1
,1]# 三維陣列:同二維陣列的編碼,我想象不到怎麼索引的???
#陣列切片:獲取子陣列 通用語法:x[start:stop:step]
x1[0:3
:1]#一維陣列的切片索引,x[start:stopa;step]
x1[4:7
]x1[::
-1]print
(x2)
x2[:2,
:3]#表示:2行3列
x2[::-
1,::
-1]#二維陣列的切片索引,
#排序
# numpy.sort(a,axis,kind,order) 返回輸入陣列的排序副本,a是要排序的陣列;axis=0按列排序,axis=1,按行排序
#kind 預設『quicksort快速排序』,除此之外還有mergesort(歸併排序),heapsort(堆排序)
a=np.array([[
10,8]
,[9,
7]])
print
(a)np.sort(a,
0,kind=
'quicksort'
)#按列排序,axis=0
np.sort(a,
1,kind=
'quicksort'
)#按行排序,axis=1
副本是乙個資料的完整拷貝,如果對副本進行修 改,不會影響原始資料,物理記憶體不在同一位置,檢視是資料的乙個引用
numpy.view() 產生乙個檢視
numpy.copy() 產生乙個副本
numpy的基礎知識點很多,我認為每乙個知識點先掌握一種方法,後面再擴充套件。比如陣列的建立,一維:np.arange(0,10,2);二維:np.array([1,2,3],[4,5,6]),需要立刻反應上來。對numpy的基礎知識我進行了簡單的記錄。後面準備對**中的numpy進行應用。回到問題的開始,
numpy是什麼?
答:是python進行科學計算的基礎包,是乙個強大的n維陣列物件。提供多維陣列物件,各種派生物件(如掩碼陣列和矩陣),以及陣列快速操作的各種api。
numpy能做什麼?
答:可以建立陣列;可以對陣列進行一般的數**算(通函式);可以對陣列進行快速操作(排序,索引等)。
numpy如何應用?
答:numpy可以應用到深度學習等,十分廣泛,通過專案實踐進行深入了解。
python numpy學習筆記
encoding utf 8 import numpy as np from numpy.linalg import def main 多行注釋就乙個組合鍵 選中,ctrl lesson1 ndarray lst 1,3,5 2,4,6 print type lst np list np.array...
python numpy學習筆記
import numpy as np np.ndim 陣列的維數 np.shape 陣列的形狀 np.size 陣列的元素個數 np.dtype 陣列的元素型別 1 np.array你可以使用np.array直接用python的元組和列表來建立,如果傳遞的是多層巢狀的序列,將建立多維陣列。為了建立列...
python numpy 學習筆記(6)
這次主要介紹numpy下的clip,compress,prod,以及cumprod方法 coding utf 8 from numpy import a arange 5 print a a print clipped a.clip 1,2 使用clipped修剪陣列,將比最小值1小的數變成最小值,...