5. NumPy(2)
索引: 元素對應的位置
[方法]: 索引的起如值為 0,可依序遞增,或從最終值為-1,依序遞減.
1)a[index_a]:選取索引 index_a 的元素
2)a[index_a:index_b]:選取連續區間索引 index_a 到 index_b+1 的元素
[範例 1]: a = [2,4,6,8,10,12,14,16,18,20],取得索引 index_a=2
對應的元素值.
In [1]: a = np.array([2,4,6,8,10,12,14,16,18,20])
In [2]: a[2]
Out[2]: 6
6. NumPy(2)
[範例 2]: a = [2,4,6,8,10,12,14,16,18,20],取得索引 index_a=2
到 index_b=5 以及 index_a=-5 到 index_b=-1 所對應的元素值,.
In [1]: a = np.array([2,4,6,8,10,12,14,16,18,20])
In [2]: a[2:5]
Out[2]: array([ 6, 8, 10])
In [3]: a[-5:-1]
Out[3]: array([12, 14, 16, 18])
7. NumPy(2)
切片: 替換對應位置的元素
[方法]: [index_s:index_e:index_c], index_s:起始的索引,index_e:
結束的索引,index_c:替換問隔第幾個索引對應的元素值.
[範例 1]: a = [2,4,6,8,10,12,14,16,18,20],起始索引為 0,結束索引
為 9,將索引為 2 的倍數所對應的元素值均替換為 66.
In [1]: a = np.array([2,4,6,8,10,12,14,16,18,20])
In [2]: a[0:9:2]=66
In [2]: print(a)
[66 4 66 8 66 12 66 16 66 20]
8. NumPy(2)
[範例 2]: a = [2,4,6,8,10,12,14,16,18,20],將陣列的元素做倒序.
In [1]: a = np.array([2,4,6,8,10,12,14,16,18,20])
In [2]: a[::-1]
Out[2]: array([20, 18, 16, 14, 12, 10, 8, 6, 4, 2])
In [3]: a[::1]
Out[3]: array([ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
9. NumPy(2)
迭代: 訪問所有的元素
[方法]: for i in array:,透過迴圈的方式來訪問陣列或矩陣的所有元素.
[範例 1]: a = [2,4,6,8,10,12,14,16,18,20],運用迭代來訪問所有的
元素.
In [1]: a = np.array([2,4,6])
In [2]: for i in a:
print(i)
2
4
6
10. NumPy(2)
[範例 2]: a = [2,4][8,10],運用迭代來訪問所有的元素.
In [1]: a = np.array([[2,4],[8,10]])
In [2]: for i in a:
print(i)
[2 4]
[ 8 10]
In [3]: for i in a.flat:
print(i)
2
4
8
10
12. NumPy(2)
[範例 1]: a = [2,4][6,8], b = [10,12][14,16],運用 np.vstack(),
和 np.concatenate(axis = 0)對 a 和 b 做垂直方向合併
In [1]: a = np.array([[2,4],[6,8]])
In [2]: b = np.array([[10,12],[14,16]])
In [3]: np.vstack((a, b))
Out[3]:
array([[ 2, 4],
[ 6, 8],
[10, 12],
[14, 16]])
27. NumPy(2)
bitwise_and: 執行位元 And 操作.
[方法]: np.bitwise_and()
[範例 1]: a = 10, b = 15,運用 np.bitwise_and 對 a 和 b 做二進制 and
的運算.
In [1]: a = 10
In [2]: b = 15
In [3]: np.bitwise_and(a, b)
Out[4]: 10
28. NumPy(2)
bitwise_or: 執行位元 Or 操作.
[方法]: np.bitwise_or()
[範例 1]: a = 10, b = 15,運用 np.bitwise_or 對 a 和 b 做二進制 or
的運算.
In [1]: a = 10
In [2]: b = 15
In [3]: np.bitwise_or(a, b)
Out[4]: 15
30. NumPy(2)
[範例 1]: a = 10,運用 np.invert 對 a 做二進制反向運算.
In [1]: a = 10
In [2]: bin(a)
Out[2]: '0b1010'
In [3]: bin(np.invert(a))
Out[3]: '-0b1011'
In [4]: np.invert(a)
Out[4]: -11
37. NumPy(2)
char.add: 對兩個陣列進行字串連接
[方法]: np.char.add()
[範例 1]: a = I m, b= Benson,運用 np.char.add 將 a 和 b 做字串連接.
In [1]: a = 'I am'
In [2]: b = ' Benson'
In [3]: np.char.add(a,b)
Out[3]: array('I am Benson', dtype='<U11')
48. NumPy(2)
[範例 2]: a = Hi!, I am Benson.,運用 np.char.join 將 a 字串中的第
一個元素的每個字元都以/符號做分隔及連接, 第二個元素的每個字元都以#符
號做分隔及連接.
In [1]: a = ['Hi!', 'I am Benson.']
In [2]: np.char.join(['/', '#'], a)
Out[2]: array(['H/i/!', 'I# #a#m# #B#e#n#s#o#n#.'],
dtype='<U23')
50. NumPy(2)
char.encode: 將字串轉換成編碼後的字元和符號.
[方法]: np.char.encode()
[範例 1]: a = Hi!, I am Benson.,運用 np.char.encode 將 a 字串轉
換成編碼後的字元和符號,使用的是 cp500 的編碼.
In [1]: a = ['Hi!', 'I am Benson.']
In [2]: np.char.encode(a, 'cp500')
Out[2]: array([b'xc8x89O',
b'xc9@x81x94@xc2x85x95xa2x96x95K'],
dtype='|S12')
51. NumPy(2)
char.decode: 將字串進行解碼.
[方法]: np.char.decode()
[範例 1]: a = [b'xc8x89O',
b'xc9@x81x94@xc2x85x95xa2x96x95K'],運用
np.char.decode 將 a 字串轉換成解碼後的字符號,使用的是 cp500 的編碼.
In [1]: a = [b'xc8x89O',
b'xc9@x81x94@xc2x85x95xa2x96x95K']
In [2]: np.char.decode(a, 'cp500')
Out[2]: array(['Hi!', 'I am Benson.'], dtype='<U12')
55. NumPy(2)
savez: 編寫多個矩陣至文件中,副檔名為.npz.
[方法]: np.savez()
[範例 1]: a = [2,4,6,8,10], b = [1,3,4,5,9]和 c = [2,14,16,18,20],
透過 np.savez 將陣列 a,b,和 c 都寫入到 np_savez_outfile.npz 檔案中.
In [1]: a = np.array([2,4,6,8,10])
In [2]: b = np.array([1,3,5,7,9])
In [3]: c = np.array([2,14,16,18,20])
In [4]: np.savez('np_savez_outfile.npz', a, b, c)
73. NumPy(2)
linalg.solve: 計算線性方程式的 x 解.
[方法]: np.linalg.solve()
[範例 1]: a = [2, 4],[3, 5],b = [8, 14],運用 linalg.solve 來計
算 ax=b 的線性方程式的解.
In [1]: a = np.array([[2, 4],[3, 5]])
In [2]: b = np.array([8, 14])
In [3]: x = np.linalg.solve(a, b)
In [4]: print(x)
[ 8. -2.]