zoukankan      html  css  js  c++  java
  • python的列表,数组和矩阵

    理论

    python列表与numpy数组的区别

    使用Python列表可以存储一维数组,通过列表的嵌套可以实现多维数组。而numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器,存储效率和输入输出性能远优于Python中的嵌套列表。通常Numpy数组中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,因此在通用性能方面Numpy数组不及Python列表,但在科学计算中使用方面要比Python列表简单的多。

    Numpy数组和矩阵的区别

    1. 矩阵必须是二维的,而数组可以是一维到任意维。
    2. 矩阵的主要优势是:相对简单的乘法运算符号
    3. 矩阵和数组都可以通过objects后面加.T得到其转置。但是矩阵还可以在后面加 .H得到共轭矩阵, 加.I得到逆矩阵
    4. 相反的是在numpy里面数组遵从逐个元素的运算,所以对于数组c 和d的c*d运算相当于matlab里面的c.*d运算。而矩阵相乘,则需要numpy里面的dot

    示例

    一维数组的输出

    如下,对于一维数组的输出都是不同的

    m_list=[1,2] # 结果为[1,2]
    m_arr=np.array(m_list) # [1 2]
    m_mat=np.mat(m_list) # [[1 2]],因为矩阵必须二维
    

    二维数组的输出

    m_list=[[1,2],[3,4]]
    m_arr=np.array(m_list)
    m_mat=np.mat(m_list)
    

    结果为:

    [[1, 2], [3, 4]]
    
    [[1 2]
     [3 4]]
     
    [[1 2]
     [3 4]]
    

    其中数组和矩阵的数组在形式上是相同的,但是数组的维度会发生变化。

    数组的维度会发生变化

    做归约运算时,数组的维度会发生变化,比如平均运算:

    m_list=[[1,2],[3,4]]
    m_arr=np.array(m_list)
    m_mat=np.mat(m_list)
    print(m_arr.mean(1))
    print(m_mat.mean(1))
    

    结果如下:

    [1.5 3.5]
    
    [[1.5]
    [3.5]]
    

    同理,在获取某一行或某一列数据的时候也不一样:

    m_list=[[1,2],[3,4]]
    m_arr=np.array(m_list)
    m_mat=np.mat(m_list)
    print(m_arr[:,1]) #获取第二列元素
    print(m_mat[:,1])
    

    结果为:

    [2 4]
    
    [[2]
     [4]]
    
  • 相关阅读:
    Android中ProgressDialog的应用
    Content的startActivity方法需添加FLAG_ACTIVITY_NEW_TASK flag
    android onKeydown
    8 个最优秀的 Android Studio 插件
    Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
    Android提供的LruCache类简介
    Android设计中的.9.png与Android Studio中的设置
    js实现双击后网页自己主动跑-------Day55
    Oracle经常使用函数
    《R实战》读书笔记三
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13281643.html
Copyright © 2011-2022 走看看