python中numpy的常见矩阵运算

1.矩阵相加运算:
(1)两个矩阵相加,需要满足以下至少一个条件:
a.两个矩阵的行数和列数是相等的
b.其中一个矩阵的行数或者列数是1

(2)行数是一行的情况,相当于对矩阵进行行扩展,缺少的行的元素值与该行的元素值相同
score_test_1 = np.array([ [0,0,0],[1,1,1],[2,2,2] ])
score_test_2 = np.array([10,10,10])
score_test_3 = score_test_1 + score_test_2
计算过程中,score_test_2 相当于score_test_2 = np.array([ [10,10,10],[10,10,10],[10,10,10] ])

(3)列数是一列的情况,相当于对矩阵进行列扩展,缺少的列的元素值与该列的元素值相同
score_test_1 = np.array([[0,0,0],[1,1,1],[2,2,2]])
score_test_2 = np.array([ [1],[2],[3] ])
score_test_3 = score_test_1 + score_test_2
计算过程中,score_test_2 相当于score_test_2 = np.array([ [10,10,10],[10,10,10],[10,10,10] ])

(4)矩阵与一个数字相加(一行一列的矩阵),相当于对矩阵进行行和列扩展,缺少的元素值与次数字相同
score_test_1 = np.array([[0,0,0],[1,1,1],[2,2,2]])
score_test_2 = 3
score_test_3 = score_test_1 + score_test_2
计算过程中,score_test_2 相当于score_test_2 = np.array([ [3,3,3],[3,3,3],[3,3,3] ])

2.矩阵的点乘运算:
array_price = np.array([
[120,60,220],
[115,23,201],
[132,48,230]
])
array_amout = np.array([
[12.34,0.04],
[204.56,2.34],
[9.89,0.45]
])
result = np.dot(array_price,array_amout)

3.矩阵的索引操作:
(1)取矩阵某一行元素:行对应位置取对应的行,列对应位置,使用冒号,或者不写
array_price[0,:]
array_price[0]
(2)取矩阵某一列元素:行对应位置使用冒号,列对应位置取对应的列
array_price[:,0]
(3)取某个元素的值:行对应位置取对应的行,列对应位置取对应的列
array_price[0,0]
(4)取矩阵某几行元素:行对应位置使用列表,写要取的行,列对应位置,使用冒号,或者不写
array_price[[0,2],:]
array_price[ [0,2] ] #注意此处有两个[],否则就是取某个元素
(5)取矩阵某几列元素:使用切片操作,列对应位置使用列表,写要取的列,行对应位置,使用冒号
array_price[[:,[0,2]]
(6)取矩阵连续的某几行元素:行对应位置使用切片列表(左闭右开),列对应位置,使用冒号,或者不写
array_price[0:2,:] #取前两行
(7)取矩阵连续的某几列元素:列对应位置使用切片列表(左闭右开),行对应位置,使用冒号
array_price[,:0:2] #取前两行
(8)取矩阵中两个特定元素:行对应位置使用列表取对应的两行,列对应位置使用列表,取对应的两列
array_price[[0,2],[0,2]] #0行0列,和2行2列的元素
(9)去多行多列的交叉值:
a.使用索引器
array_price[np.ix_([0,2],[0,2])] #属于0行和2行,0列和2列的值
b.先取行,再取列
array_price[ [0,2],: ][:,[0,2] ]
(10)bool索引,取出矩阵中符合某一条件的值:
test_score = np.array([[100,80,50,55],[100,99,98,97]])
test_score[test_score > 60]
说明:
a.取出的内容是大于60的元素
b.不管矩阵的形状如何,返回的都是一维数组

猜你喜欢

转载自blog.csdn.net/qq_35833972/article/details/89437923