NumPy是Python中一個非常常用的科學計算模塊,它可以幫助我們更加高效地操作多維數組並進行各種數學運算。本文將介紹NumPy的基本操作、數組運算、文件操作、廣播等相關知識。
一、NumPy基礎操作
NumPy中最基本的對象是ndarray對象,它是一個n維數組,可以容納同類型的元素,每個元素佔據4個或8個位元組的內存空間,它的形狀由一個由n個非負整數組成的元組定義。在NumPy中,ndarray對象還可以表示為dtype對象,可以指定數據類型、內存空間布局、位元組順序等屬性。
1. 創建ndarray對象。可以使用NumPy函數numpy.array()來創建數組。傳遞一個列表或元組即可:
import numpy as np
a = np.array([1,2,3,4,5])
print(a)
輸出結果:
[1 2 3 4 5]
也可以傳遞一個嵌套列表:
b = np.array([[1,2,3],[4,5,6]])
print(b)
輸出結果:
[[1 2 3]
[4 5 6]]
2. 數組屬性。可以使用ndarray對象的屬性來查看數組的維度、形狀、大小、元素類型等:
c = np.array([1,2,3], dtype=np.float32)
print('c的維度為:', c.ndim)
print('c的形狀為:', c.shape)
print('c的大小為:', c.size)
print('c中的元素類型為:', c.dtype)
輸出結果:
c的維度為: 1
c的形狀為: (3,)
c的大小為: 3
c中的元素類型為: float32
二、數組運算
NumPy中的矢量化操作可以使得代碼更加簡潔高效,同時也可以避免循環帶來的性能損耗。下面介紹常用的數組運算:
1. 數組索引和切片。可以使用整數或切片來訪問ndarray對象的元素,當使用多個整數或切片時,可以用英文逗號隔開:
d = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(d[0,2])
print(d[1:3,0:2])
輸出結果:
3
[[4 5]
[7 8]]
2. 數組運算。NumPy可以實現數組之間的數學運算,包括加、乘、除、冪等運算。
e = np.array([1,2,3])
f = np.array([4,5,6])
print('e+f:', e+f)
print('e*f:', e*f)
print('e/f:', e/f)
print('e**2:', e**2)
輸出結果:
e+f: [5 7 9]
e*f: [ 4 10 18]
e/f: [0.25 0.4 0.5 ]
e**2: [1 4 9]
3. 數學函數。NumPy中還有許多可以對數組進行數學計算的函數,例如:sin、cos、exp、sqrt等。
g = np.array([1,2,3])
print('sin(g):', np.sin(g))
print('cos(g):', np.cos(g))
print('exp(g):', np.exp(g))
print('sqrt(g):', np.sqrt(g))
輸出結果:
sin(g): [0.84147098 0.90929743 0.14112001]
cos(g): [ 0.54030231 -0.41614684 -0.9899925 ]
exp(g): [ 2.71828183 7.3890561 20.08553692]
sqrt(g): [1. 1.41421356 1.73205081]
三、NumPy文件操作
NumPy可以讀取和寫入各種文件格式的數組。當使用NumPy保存數組時,它會自動添加一個文件頭,其中包含數組的形狀、類型和其他信息。
1. 保存數組。可以使用numpy.save()函數將NumPy數組保存到文件中。文件擴展名為.npy。
h = np.array([1,2,3])
np.save('h_array',h)
2. 載入數組。可以使用numpy.load()函數讀取.npy文件:
i = np.load('h_array.npy')
print(i)
輸出結果:
[1 2 3]
四、廣播
廣播是一個強大的概念,它允許NumPy在執行算術運算期間使用不同形狀的數組。在許多情況下,廣播可以避免使用循環,從而大大提高代碼的性能。
1. 一維數組廣播。當一個數組和一個標量進行運算時,標量會被廣播到數組的每個元素上。
j = np.array([1,2,3])
print(j+2)
輸出結果:
[3 4 5]
2. 二維數組廣播。當兩個數組的形狀不同時,NumPy會自動執行廣播。將每個數組擴展到公共形狀,然後進行逐個元素的運算。例如,當一個二維數組和一個一維數組相加時,可以將一維數組擴展為二維數組的形狀。
k = np.array([[1,2,3],[4,5,6]])
l = np.array([1,2,3])
print(k+l)
輸出結果:
[[2 4 6]
[5 7 9]]
以上就是NumPy的基本操作、數組運算、文件操作、廣播等相關知識的介紹。使用NumPy可以更加高效地處理數組運算,使得代碼更加簡潔高效,避免循環帶來的性能損耗。
原創文章,作者:OLFN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146328.html