Python突擊(三)Numpy基礎
阿新 • • 發佈:2021-01-09
目錄
1.建立陣列
array()函式建立一個 NumPyndarray物件
import numpy as np
a = np.array([1,2,3,4,5]) #np.array([1,2,4],ndim = 3)指定陣列的維度
print(a)
print(type(a))
#[1 2 3 4 5]
#<class 'numpy.ndarray'>
一維陣列和二維陣列(通常表示矩陣和二維張量),三維矩陣(兩個二維矩陣組成)
import numpy as np
a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a)
print("\n",b)
print("\n",c)
print(a.ndim)
print(b.ndim)
print(c.ndim)
NumPy 有一個專門用於矩陣運算的完整子模組numpy.mat
NumPy 陣列提供了ndim屬性,該屬性返回一個整數,該整數會告訴我們陣列有多少維。
2. 訪問陣列
和MATLAB中差不多。
import numpy as np
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print("\n",b)
print(b.ndim)
print(b[0,1])
3.陣列裁剪
import numpy as np
arr = np.array([1,2,3,4,5,6,7])
print(arr[1:5])
#[2 3 4 5] 左開右閉
4.資料型別
預設情況下,Python 擁有以下資料型別
- strings- 用於表示文字資料,文字用引號引起來。例如 "ABCD"。
- integer- 用於表示整數。例如 -1, -2, -3。
- float- 用於表示實數。例如 1.2, 42.42。
- boolean- 用於表示 True 或 False。
- complex- 用於表示複平面中的數字。例如 1.0 + 2.0j,1.5 + 2.5j。
NumPy 有一些額外的資料型別,並通過一個字元引用資料型別,例如i代表整數,u代表無符號整數等。
以下是 NumPy 中所有資料型別的列表以及用於表示它們的字元。
- i- 整數
- b- 布林
- u- 無符號整數
- f- 浮點
- c- 複合浮點數
- m- timedelta
- M- datetime
- O- 物件
- S- 字串
- U- unicode 字串
- V- 固定的其他型別的記憶體塊 ( void )
NumPy 陣列物件有一個名為dtype的屬性,該屬性返回陣列的資料型別。
import numpy as np
a = np.array([1,2,3])
print(a.dtype) # int32
#print(type(a))
5.副本/檢視
副本和陣列檢視之間的主要區別在於副本是一個新陣列,而這個檢視只是原始陣列的檢視。副本擁有資料,對副本所做的任何更改都不會影響原始陣列,對原始陣列所做的任何更改也不會影響副本。檢視不擁有資料,對檢視所做的任何更改都會影響原始陣列,而對原始陣列所做的任何更改都會影響檢視。
import numpy as np
a = np.array([1,2,3,4,5])
# 建立檢視
x = a.view()
# 建立副本
# x = a.copy()
a[0] = 61
print(a)
print(x)
# 檢視
#[61 2 3 4 5]
#[61 2 3 4 5]
#副本
#[61 2 3 4 5]
#[1 2 3 4 5]
副本擁有資料,而檢視不擁有資料,每個 NumPy 陣列都有一個屬性base,如果該陣列擁有資料,則這個 base 屬性返回None。否則,base屬性將引用原始物件。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
# None
# [1 2 3 4 5]
6.陣列常用屬性
- NumPy 陣列有一個名為shape的屬性,該屬性返回一個元組,每個索引具有相應元素的數量。
- 重塑陣列reshape屬性,返回的是檢視
- 將多維陣列轉換為 1D 陣列reshape(-1)
import numpy as np
arr = np.array([1,2,3,4,5,6])# 一維陣列
print(arr)
arr1 = arr.reshape(2,3) # 重塑為二維陣列
print(arr1)
print(new_arr.base) # 重塑後返回的是檢視不是副本
arr2 = arr1.reshape(-1) # 重塑為一維陣列
print(arr2)
結果如下所示
- 陣列拼接concatenate(,axis=)函式,hstack()沿行堆疊,vstack()沿列堆疊,dstack()沿高度堆疊
- 排序
- 拆分
7.隨機
NumPy 提供了 random 模組來處理隨機數。
- 生成隨機數
from numpy import random
a = random.randint(100)
print(a)
- 生成隨機陣列
from numpy import random
a = random.randint(100,size=(2,3))#生成二維陣列
print(a)