numpy中数组和矩阵的区别

  • matrix是array的分支,matrix和array在很多时候都是通用的,用哪一个都一样;
  • 如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。
  • 相同点:索引方式相同,都可以使用a[i][j],a[i,j]进行索引
  • matrix(矩阵):
  1. 具有相对简单的运算符号,比如两个matrix相乘(求内积),就是用符号*
  • array(数组):
  • 1.两个一维数组相乘用*,对应元素相乘
  • import numpy as np
    a=np.array([1,2,3,4])
    b=np.array([2,3,4,5])
    print(a*b)
    print(sum(a*b))
    
    #结果
    [ 2  6 12 20]
    40
  1. 多维数组也可以看成矩阵,如果进行矩阵相乘(求内积),则需要用到np.dot(),如np.dot(arr.T,arr)
  • 两者转换:
  • import numpy as np
    
    """rand函数的作用就是从标准正态分布中返回一个或多个样本值,
        这里返回2行3列共6个数的数组。
    标准正态分布俗称高斯分布,均值为0,方差为1的正态分布。"""
    
    arr=np.random.rand(2,3)
    b=np.dot(arr.T,arr)  #把数组当成矩阵,对应元素相乘求内积
    #将数组转化成矩阵
    arr_Matrix=mat(arr)  #等同于arr_Matrix=matrix(arr) ,mat是matrix的缩写
    c=arr_Matrix.T * arr_Matrix  #矩阵直接相乘
    
    #将结果输出
    print("arr:\n{}\ntype(arr):{}".format(arr,type(arr)))
    print("数组(矩阵)内积:\n",b)
    
    print("arr_Matrix:\n{}\ntype(arr_Matrix):{}".format(arr_Matrix,type(arr_Matrix)))
    print("矩阵乘积:\n",c)
    
    #比较两者乘积是否相等
    print("数组矩阵内积=矩阵乘积:\n",b==c)
    
    
    #运行结果如下:
    arr:
    [[0.93383594 0.70401786 0.95323492]
     [0.7970047  0.21436019 0.24329003]]
    type(arr):<class 'numpy.ndarray'>
    数组(矩阵)内积:
     [[1.50726605 0.82828326 1.08406832]
     [0.82828326 0.54159144 0.72324611]
     [1.08406832 0.72324611 0.96784685]]
    arr_Matrix:
    [[0.93383594 0.70401786 0.95323492]
     [0.7970047  0.21436019 0.24329003]]
    type(arr_Matrix):<class 'numpy.matrixlib.defmatrix.matrix'>
    矩阵乘积:
     [[1.50726605 0.82828326 1.08406832]
     [0.82828326 0.54159144 0.72324611]
     [1.08406832 0.72324611 0.96784685]]
    数组矩阵内积=矩阵乘积:
     [[ True  True  True]
     [ True  True  True]
     [ True  True  True]]
    

猜你喜欢

转载自blog.csdn.net/jiangsujiangjiang/article/details/83714475