numpy基础属性方法随机整理(8):矩阵乘法 及 对应元素相乘的矩阵乘法

矩阵运算基础知识参考:矩阵的运算及其规则


1) matrix multiplication

矩阵乘法: (m,n) x (n,p) –> (m,p) # 矩阵乘法运算前提:矩阵1的列=矩阵2的行
3种用法: np.dot(matrix_a, matrix_b) == matrix_a @ matrix_b == matrix_a * matrix_b

2) element-wise product : 矩阵对应元素相乘

1种用法:np.multiply(matrix_c, matrix_d)
对于nd.array()类型而言,数组 arrA * arrB 只能element-wise produt(对应元素相乘)

# -*- coding: utf-8 -*-
"""
Created on Thu Jul 26 14:22:40 2018

@author: Administrator
"""

import numpy as np

a = np.array([[1,2],[3,4],[11,12]])
b = np.array([[5,6,13],[7,8,14]])
c = np.array([[1,2,13],[3,4,25],[11,12,23]])
d = np.array([[5,6,2],[7,8,29],[13,14,15]])

matrix_a = np.matrix(a)         # (3,2)
matrix_b = np.matrix(b)         # (2,3)
matrix_c = np.matrix(c)         # (3,3)
matrix_d = np.matrix(d)         # (3,3)

print(type(a),type(matrix_a))  # <class 'numpy.ndarray'> <class 'numpy.matrixlib.defmatrix.matrix'>
mat_a = np.mat(a)
print(type(a),type(matrix_a))  # <class 'numpy.ndarray'> <class 'numpy.matrixlib.defmatrix.matrix'>



'''
# 1) matrix multiplication
矩阵乘法: (m,n) x (n,p) --> (m,p)    # 矩阵乘法运算前提:矩阵1的列=矩阵2的行
3种用法: np.dot(matrix_a, matrix_b) == matrix_a @ matrix_b == matrix_a * matrix_b
'''
method_1 = matrix_a @ matrix_b
method_2 = np.dot(matrix_a, matrix_b)

print(method_1)
#[[ 19  22  41]
# [ 43  50  95]
# [139 162 311]]
print(method_2 == method_1)
#[[ True  True  True]
# [ True  True  True]
# [ True  True  True]]
print(matrix_c * matrix_d == matrix_c @ matrix_d)
#[[ True  True  True]
# [ True  True  True]
# [ True  True  True]]


'''
# 2) element-wise product : 矩阵对应元素相乘
1种用法:np.multiply(matrix_c, matrix_d)
对于nd.array()类型而言,数组 arrA * arrB 只能element-wise produt(对应元素相乘) 
'''
print(matrix_c, matrix_d, sep='\n')
#[[ 1  2 13]
# [ 3  4 25]
# [11 12 23]]
#[[ 5  6  2]
# [ 7  8 29]
# [13 14 15]]

method_1 = np.multiply(matrix_c, matrix_d)      # 对应位置元素相乘

print(method_1)
#[[  5  12  26]
# [ 21  32 725]
# [143 168 345]]


猜你喜欢

转载自blog.csdn.net/weixin_40040404/article/details/81226560