zoukankan      html  css  js  c++  java
  • numpy中list array matrix比较

    用python中的numpy包的时候不小心踩了array和matrix的大坑,又引申一下比较list array matrix之间的异同。
    数据结构(Data Structures)基本上人如其名——它们只是一种结构,能够将一些数据聚合在一起。换句话说,它们是用来存储一系列相关数据的集合。Python 中有四种内置的数据结构——列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。

    1、list

    list可以明显和array、matrix区分,list通过[ ]申明,支持append extend等方法,没有shape方法。 
    使用如下: 
    data=[] 
    data.append([1,2]) 
    data.extend(2) 
    list形如:[[1,2,3],[4,5,6],[7,8,9]] 、 [1,2,3,4,5]等

    2 array matrix

    list变成array: np.array(list) 
    list变为matrxi:np.mat(list) 
    array和matrix相互转换: np.asmatrix np.asarray 
    array变换为list: data.toList() 
    这两兄弟都有shape属性,但是他俩的区别是啥呢。 
    matrix是array的子集,matrix只能是2维的,array可以是n维的。 
    2维就是matrix的shape只有行、列属性,就类似线性代数中的矩阵; 
    比如说3维的array如同: 
    3维的array

    下面就来比较array好matrix计算区别: 
    乘法符号 *:array的乘法符号就是对应元素相乘,比如: 
    这里写图片描述 
    如果行列数不匹配会自动补全,就是numpy的“广播”功能。具体怎么补全自己动手试,讲了也记不住。 
    matrix的 * 符号就是:矩阵乘法:线性代数中的乘法,比如五行三列*三行两列就会得到五行两列: 
    这里写图片描述 
    matrix想要得到矩阵*这种效果(就是矩阵相同位置的数字进行相乘):使用np.multiply(mat1,mat2) 
    array想要进行矩阵乘法使用:np.dot(array1,array2) 
    所以martirx和array中 **符号得到的结果也是不一样的。

    版权声明:本文为博主原创文章,转载注明出处即可。 https://blog.csdn.net/u011730199/article/details/78202016

  • 相关阅读:
    Spring容器基础ClassPathXmlApplicationContext(一起看源码)
    Spring容器基础xmlbeanfactory(一起看源码)
    java类库字符串操作
    反射
    maven配置文件解析
    红帽(Red Hat Linux)下SVN服务器的安装与配置
    Ant构建与部署Java项目---入门
    输入两个链表,找出他们的第一个公共节点
    java实现双向链表
    java实现双端链表
  • 原文地址:https://www.cnblogs.com/yangzhaonan/p/9245204.html
Copyright © 2011-2022 走看看