目錄
1.Numpy介紹
2.陣列
2.1創建陣列
2.2陣列的屬性
2.3創建特殊的陣列
2.4陣列切片操作
2.4.1——一維陣列的切片
2.4.3——二維陣列的切片
2.4.4——三維陣列的切片
2.5——reshape與resize
3.陣列運算
4.個人總結
hello^-^,感謝各位的來訪,祝南方的小伙伴小年快樂喔,也祝昨天的北方小伙伴小年快樂,
嘻嘻嘻 
1.Numpy介紹
NumPy(Numerical Python) 是 Python 語言的一個擴展程式庫,支持大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫,
NumPy 是一個運行速度非常快的數學庫,主要用于陣列計算,包含:
- 一個強大的N維陣列物件 ndarray
- 廣播功能函式
- 整合 C/C++/Fortran 代碼的工具
- 線性代數、傅里葉變換、亂數生成等功能
2.陣列
匯入numpy模塊,在numpy中陣列是一個ndarray物件,
import numpy as np
2.1創建陣列
numpy用array函式創建陣列array([串列] / (元組)),n維陣列由(n-1)維陣列構成,
一維陣列:
a=np.array([1,2,3,4])
print(a)
[1 2 3 4]
二維陣列:
b=np.array([[0,1,2,3],
[1,2,3,4],
[2,3,4,5]])
print(b)
print("****************************")
print(b[0])
print(b[0][0])
[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]]****************************
[0 1 2 3]
0
三維陣列: 由2個二維陣列構成,1個二維陣列又由3個一維陣列構成,一維陣列又由4個元素構成,
c=np.array([[[0,1,2,3],
[1,2,3,4],
[2,3,4,5]],
[[9,8,7,6],
[8,7,6,5],
[7,6,5,4]]])
print(c)
print("****************************")
print(c[0])
print(c[0][0])
print(c[0][0][0])
[[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]][[9 8 7 6]
[8 7 6 5]
[7 6 5 4]]]****************************
[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]]
[0 1 2 3]
0
2.2陣列的屬性
| 屬性 | 描述 |
| ndim | 陣列的維數 |
| shape | 陣列的形狀(幾行幾列) |
| size | 陣列元素的總個數 |
| dtype | 陣列中元素的資料型別 |
| itemsize | 陣列中每個元素的位元組數 |
示例 :
b=np.array([[0,1,2,3],
[1,2,3,4],
[2,3,4,5]])
print(b.ndim)
print(b.shape)
print(b.size)
print(b.dtype)
2
(3, 4)
12
int32
asarray()函式也是將串列或元組轉化為陣列物件 ,但與array不同的是在資料源本身是ndarray物件時:array()仍然會復制出一個副本,asarray()則直接參考了本來的陣列(ndarray物件改變,跟著改變)
示例:
arr1=np.array([[1,1,1],[1,1,1],[1,1,1]])
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[0][0]=2
print("arr1陣列為>\n",arr1)
print("arr2陣列為>\n",arr2)
print("arr3陣列為>\n",arr3)
arr1陣列為>
[[2 1 1]
[1 1 1]
[1 1 1]]
arr2陣列為>
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3陣列為>
[[2 1 1]
[1 1 1]
[1 1 1]]
2.3創建特殊的陣列
| 函式 | 功能描述 |
| np.arange(起始數字,結束數字,步長,dtype=資料型別)#前閉后開 | 創建數字序列陣列 |
| np.ones(shape,dtype=資料型別) | 創建全1陣列 |
| np.zeros(shape,dtype=資料型別) | 創建全0陣列 |
| np.eye(N,M,k=0, dtype=資料型別) #k為對角元素的索引,N為行,M為列,若省略M則創建方陣 | 創建回傳對角線為1的矩陣 |
| np.linspace(起始數字,結束數字,結束個數,dtype=資料型別)#閉區間 | 創建等差矩陣 |
| np.logspace(start,stop,結束個數num=,base=,dtype=資料型別) #base的start次方到base的stop次方總共有num個元素, | 創建等比矩陣 |
示例 :
a=np.arange(1,10,2)
b=np.ones((3,2),dtype=int)
c=np.zeros((3,2),dtype=int)
d=np.eye(4,dtype=int,k=1)
e=np.linspace(2,8,7,dtype=int)
f=np.logspace(2,10,9,base=2,dtype=int)
print("a陣列為>\n",a)
print("b陣列為>\n",b)
print("c陣列為>\n",c)
print("d陣列為>\n",d)
print("e陣列為>\n",e)
print("f陣列為>\n",f)
a陣列為>
[1 3 5 7 9]
b陣列為>
[[1 1]
[1 1]
[1 1]]
c陣列為>
[[0 0]
[0 0]
[0 0]]
d陣列為>
[[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
[0 0 0 0]]
e陣列為>
[2 3 4 5 6 7 8]
f陣列為>
[ 4 8 16 32 64 128 256 512 1024]
2.4陣列切片操作
2.4.1——一維陣列的切片
切片操作-陣列名[start:stop:step]——start為切片起始下標,stop為切片停止下標(不包含該下標陣列值),即左閉又開,step為切片步長,
import numpy as np
import random
a=np.arange(10) #0-9的閉區間
print(a)
print(a[0:9:2])
[0 1 2 3 4 5 6 7 8 9]
[0 2 4 6 8]
2.4.3——二維陣列的切片
import numpy as np
a=np.array([[1,2,3,4],[5,6,7,8],[5,1,2,4]])
print(a[0:2,0:2])
print(a[:,2])
print(a[2,0:2])
[[1 2]
[5 6]]
[3 7 2]
[5 1]
二維陣列的切片為先對行切片再對列切片,中間逗號隔開 ,若為數字則為數字索引的行/列,
注意:
a[ : ,2]操作為先對每行切片,再對索引為2即第三列切,這里生成的陣列為一維陣列不是二維陣列
2.4.4——三維陣列的切片
t=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[4,4,4]]])
print(t[:,:,0])
[[1 4]
[7 4]]
三維陣列切片同理二維陣列
注意:
t[ : , : ,0]操作為先切出三維陣列的每個陣列即2個二維陣列,再切除每一行,最后切第一列,得到1個二維陣列,
2.5——reshape與resize
| 函式 | 功能描述 |
| np.reshape(shape) | 不改變當前陣列,按照shape創建新的陣列 |
| np.resize(shape) | 改變當前陣列,按照shape創建新的陣列 |
當改變形狀時,應該考慮到陣列中元素的個數,確保改變前后,元素總個數相等,
import numpy as np
import random
t=np.arange(12)
print(t)
print("reshape操作\n")
t.reshape(3,4)
print(t)
print("resize操作\n")
t.resize(3, 4)
print(t)
[ 0 1 2 3 4 5 6 7 8 9 10 11]
reshape操作[ 0 1 2 3 4 5 6 7 8 9 10 11]
resize操作[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
可利用reshape(-1)將二位陣列轉換為一維陣列
3.陣列運算
這里拿加法舉例子
a=np.array([0,1,2,3])
b=np.array([1,1,1,1])
print(a+b)
[1 2 3 4]
可見對應下標數值相加
一維陣列也可和多維陣列相加,相加時一維陣列擴展至多維
a=np.array([0,1,2,3])
c=np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3]])
print(a+c)
[[1 2 3 4]
[2 3 4 5]
[3 4 5 6]]
- 陣列的減法、乘法、除法運算,和加法運算規則相同,
- 當兩個陣列元素的資料型別不同時,精度低的資料型別會向精度高的轉換再進行運算,
**冪運算 :對陣列每個元素求n次方
a=np.arange(12).reshape(3,4)
print(a,"\n")
print(a**2)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]][[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]]
4.個人總結
以上就為本人對numpy模塊陣列操作的一部分的簡單學習,感謝各位的觀看,希望各位也能有所識訓,并與我討論,謝謝大家!!!!!!最后祝大家身體健康,萬事如意!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421853.html
標籤:AI
上一篇:數學建模 | 美賽如何高效準備 | O獎論文是怎么翻譯的 | 保研沖一波
下一篇:pandas使用unique函式計算dataframe單個資料列中的獨特值、或者計算dataframe多個資料列的獨特值(get unique values of column or columns)
