矩陣是二維數(shù)組的特殊情況,它的每個數(shù)據(jù)元素具有嚴(yán)格相同的大小。 所以每個矩陣也是一個二維數(shù)組,但反之亦然。 矩陣是許多數(shù)學(xué)和科學(xué)計算中非常重要的數(shù)據(jù)結(jié)構(gòu)。 正如在前一章中已經(jīng)討論過的二維數(shù)組結(jié)構(gòu),我們將在本章中專注于矩陣特有的數(shù)據(jù)結(jié)構(gòu)操作。
也使用numpy包進(jìn)行矩陣數(shù)據(jù)操作。
考慮在早上,中午,晚上和深夜測量記錄1周溫度的情況。 它可以使用數(shù)組在numpy中可用的重塑方法以7 x 5矩陣的形式呈現(xiàn)。
from numpy import *
a = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m = reshape(a,(7,5))
print(m)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
[['Mon' '18' '20' '22' '17']
['Tue' '11' '18' '21' '18']
['Wed' '15' '21' '20' '19']
['Thu' '11' '20' '22' '21']
['Fri' '18' '17' '23' '22']
['Sat' '12' '22' '20' '18']
['Sun' '13' '15' '19' '16']]
矩陣中的數(shù)據(jù)元素可以通過使用索引來訪問。 訪問方法與在二維數(shù)組中訪問數(shù)據(jù)的方式相同。
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
# Print data for Wednesday
print(m[2])
# Print data for friday evening
print(m[4][3])
執(zhí)行上面示例代碼,得到以下結(jié)果 -
['Wed' '15' '21' '20' '19']
23
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m_r = append(m,[['Avg',12,15,13,11]],0)
print(m_r)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果 -
[['Mon' '18' '20' '22' '17']
['Tue' '11' '18' '21' '18']
['Wed' '15' '21' '20' '19']
['Thu' '11' '20' '22' '21']
['Fri' '18' '17' '23' '22']
['Sat' '12' '22' '20' '18']
['Sun' '13' '15' '19' '16']
['Avg' '12' '15' '13' '11']]
可以使用insert()方法將一列數(shù)據(jù)添加到矩陣。 這里指定想要添加列的索引以及包含添加的列的新值的數(shù)組。 在下面的例子中,在開頭的第五個位置添加一個新的列。
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1)
print(m_c)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
[['Mon' '18' '20' '22' '17' '1']
['Tue' '11' '18' '21' '18' '2']
['Wed' '15' '21' '20' '19' '3']
['Thu' '11' '20' '22' '21' '4']
['Fri' '18' '17' '23' '22' '5']
['Sat' '12' '22' '20' '18' '6']
['Sun' '13' '15' '19' '16' '7']]
可以使用delete()方法從矩陣中刪除一行。 必須指定行的索引以及行的值為0,列的值為1的軸值。
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m = delete(m,[2],0)
print(m)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
[['Mon' '18' '20' '22' '17']
['Tue' '11' '18' '21' '18']
['Thu' '11' '20' '22' '21']
['Fri' '18' '17' '23' '22']
['Sat' '12' '22' '20' '18']
['Sun' '13' '15' '19' '16']]
可以使用delete()方法從矩陣中刪除一列。 必須指定列的索引以及一行為0,一列為1的軸值。
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m = delete(m,s_[2],1)
print(m)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
[['Mon' '18' '22' '17']
['Tue' '11' '21' '18']
['Wed' '15' '20' '19']
['Thu' '11' '22' '21']
['Fri' '18' '23' '22']
['Sat' '12' '20' '18']
['Sun' '13' '19' '16']]
要更新矩陣行中的值,只需在行的索引處重新分配值。 在下面的例子中,星期幾數(shù)據(jù)的所有值都標(biāo)記為0。 該行的索引是3。
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
m[3] = ['Thu',0,0,0,0]
print(m)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果 -
[['Mon' '18' '20' '22' '17']
['Tue' '11' '18' '21' '18']
['Wed' '15' '21' '20' '19']
['Thu' '0' '0' '0' '0']
['Fri' '18' '17' '23' '22']
['Sat' '12' '22' '20' '18']
['Sun' '13' '15' '19' '16']]