NumPy學習筆記

學習NumPy庫,把一些重要的或者難的用法記錄下來,方便複習。

  1. 從數值範圍創建數組
 numpy.arange(start, stop, step, dtype)#參數分別爲起始值,終止值,步長和數據類型
  1. 創建等間隔一維數組
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)#參數分別爲起始值,終止值,數據數,是否包含stop值,是否顯示間距和數據類型
在這裏插入代碼片
  1. 使用數字 0 將一個全爲 1 的 5x5 二維數組包圍
Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
  1. 創建一個 5x5 的二維數組,並設置值 1, 2, 3, 4 落在其對角線下方Z = np.diag(1+np.arange(4),k=-1)
  2. 創建一個 10x10 的二維數組,並使得 1 和 0 沿對角線間隔放置
Z = np.zeros((10,10),dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
  1. 創建一個 0-10 的一維數組,並將 (1, 9] 之間的數全部反轉成負數
Z = np.arange(11)
Z[(1 < Z) & (Z <= 9)] *= -1
  1. 找出兩個一維數組中相同的元素
Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print("Z1:", Z1)
print("Z2:", Z2)
np.intersect1d(Z1,Z2)
  1. 統計數組各行的算術平均值
np.mean(a, axis=1)
  1. 統計數組各列的加權平均值
np.average(a, axis=0)

10.統計中位數,方差,標準差等。
11.沿橫 / 縱軸分割數組

np.hsplit(a, 3)
np.vsplit(a, 3)

12.返回每列最大值

np.max(a, axis=0) #行最大值axis = 1
  1. 返回每列最大值索引
np.argmax(a, axis=0) #最小值是argmin函數

14.找出兩個一維數組中相同的元素
np.intersect1d(Z1,Z2)
15.使用 NumPy 打印昨天、今天、明天的日期

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today     = np.datetime64('today', 'D')
tomorrow  = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print("yesterday: ", yesterday)
print("today: ", today)
print("tomorrow: ", tomorrow)

16.數組排序

Z.sort()#升序排序
Z.sort(axis=0)#列升序

17.將 float32 轉換爲整型

Z = np.arange(10, dtype=np.float32)
Z = Z.astype(np.int32, copy=False)

18.將隨機二維數組按照第 3 列從上到下進行升序排列

Z = np.random.randint(0,10,(5,5))#生成一個5行5列數值在0~10之間的數組
Z[Z[:,2].argsort()]

19.交換前兩行可以直接這樣嗎?

A[[0,1]] = A[[1,0]]

20.找出隨機一維數組Z中出現頻率最高的值

np.bincount(Z).argmax()

21.統計隨機數組中的各元素的數量

Z = np.random.randint(0,100,25).reshape(5,5)
np.unique(Z, return_counts=True) # 返回值中,第 2 個數組對應第 1 個數組元素的數量

22.將多個 1 維數組拼合爲單個 Ndarray

Z = np.array([Z1, Z2, Z3])
np.concatenate(Z)

23.使用 NumPy 計算變量直接的相關性係數

Z = np.array([
    [1, 2, 1, 9, 10, 3, 2, 6, 7], # 特徵 A
    [2, 1, 8, 3, 7, 5, 10, 7, 2], # 特徵 B
    [2, 1, 1, 8, 9, 4, 3, 5, 7]]) # 特徵 C
np.corrcoef(Z)

24.使用 NumPy 計算矩陣的特徵值和特徵向量

M = np.matrix([[1,2,3], [4,5,6], [7,8,9]])
w, v = np.linalg.eig(M)
# w 對應特徵值,v 對應特徵向量

25.打印九九乘法表

np.fromfunction(lambda i, j: (i + 1) * (j + 1), (9, 9))

26.使用 Numpy 將實驗樓 LOGO 轉換爲 Ndarray 數組

from io import BytesIO
from PIL import Image
import PIL, requests

# 通過鏈接下載圖像
URL = 'https://static.shiyanlou.com/img/logo-black.png'
response = requests.get(URL)

# 將內容讀取爲圖像
I = Image.open(BytesIO(response.content))

# 將圖像轉換爲 Ndarray
shiyanlou = np.asarray(I)
shiyanlou
# 將轉換後的 Ndarray 重新繪製成圖像
from matplotlib import pyplot as plt
%matplotlib inline
plt.imshow(shiyanlou)
plt.show()

27.幾個常用的函數

flat #返回

np.nonzero([1,0,2,0,1,0,4,0])#返回一維數組中非 0 元素的位置索引

np.dot(A, B)#矩陣相乘

np.power(x,4)#對x數組的每個值4次方

np.set_printoptions(precision=2)#對於二維隨機數組中各元素,保留其 2 位小數

Z/1e3#科學記數法輸出 NumPy(Z) 數組

a.argsort()#打印各元素在數組中升序排列的索引

a.real #屬性,數組a的實部
a.imag #屬性,數組a的虛部

numpy.linalg.inv()# 函數計算矩陣的乘法逆矩陣。

numpy.linalg.solve() #函數給出了矩陣形式的線性方程的解。

umpy.matlib.eye() #函數返回一個矩陣,對角線元素爲 1,其他位置爲零。

np.c_[M1, M2]#按列連接兩個數組
np.r_[M1, M2]#按行連接兩個數組

參考:
實驗樓NumPy 百題大沖關
NumPy教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章