Python数据结构 矩阵
矩阵是二维数组的一个特例,每个数据元素的大小都是严格相同的。所以每个矩阵也是一个二维数组,反之亦然。
矩阵是许多数学和科学计算中非常重要的数据结构。由于我们已经在上一章中讨论了二维数组数据结构,我们将在本章中重点讨论针对矩阵的数据结构操作。
我们还将使用numpy包进行矩阵数据操作。
矩阵实例
考虑一下记录一周内早晨、中午、晚上和午夜的温度的情况。它可以用一个数组和numpy中的重塑方法表现为一个7X5的矩阵。
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)
输出
上述数据可以表示为一个二维数组,如下所示
[
['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']
]
访问数值
矩阵中的数据元素可以通过使用索引来访问。这种访问方法与二维数组中访问数据的方式相同。
例子
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])
输出
当上述代码被执行时,它产生了以下结果 –
['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)
输出
当上述代码被执行时,它产生了以下结果 –
[
['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()方法在矩阵中添加列。在这里我们必须提到我们要添加列的索引和一个包含所添加列的新值的数组。在下面的例子中,我们在从头开始的第五个位置添加了一个新列。
例子
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)
输出
当上述代码被执行时,它产生了以下结果 –
[
['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)
输出
当上述代码被执行时,它产生了以下结果 –
[
['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)
输出
当上述代码被执行时,它产生了以下结果 –
[
['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']
]
更新一个行
要更新矩阵中某一行的数值,我们只需重新分配该行索引的数值。在下面的例子中,所有第三天的数据值都被标记为零。这一行的索引是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)
输出
当上述代码被执行时,它产生了以下结果 –
[
['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']
]