预存
    Document
    当前位置:文库百科文章详情
    Python中的数字型数组(Numpy)教程
    来源: 时间:2022-12-16 16:28:26 浏览:3095次

    NumPy的网页:

    ASE大量使用了Python扩展模块NumPy。NumPy模块定义了一个ndarray类型,该类型可以保存大型统一多维数字数据数组。数组类似于listtuple,但它功能更强大,效率更高。

    numpy的范例

    >>>import numpy as np

    >>> a = np.zeros((3, 2))

    >>> a[:, 1] = 1.0

    >>> a[1] = 2.0

    >>> a

    array([[ 0.,  1.],

           [ 2.,  2.],      

           [ 0.,  1.]])

    >>> a.shape

    (3, 2)

    >>> a.ndim

    2

    线性代数包numpy的范例2

    >>>import numpy as np

    >>>

    >>># 构建一个随机的厄米矩阵, H

    >>> H = np.random.rand(6, 6) + 1.j * np.random.rand(6, 6)

    >>> H = H + H.T.conj()

    >>>

    >>> # 求本征值和旋转矩阵

    >>> eps, U = np.linalg.eigh(H)

    >>>

    >>> # 本征值排序

    >>> sorted_indices = eps.real.argsort()

    >>> eps = eps[sorted_indices]

    >>> U = U[:, sorted_indices]

    >>>

    >>> # 使numpy数组的输出更加整洁:

    >>> np.set_printoptions(precision=3, suppress=True)

    >>>

    >>> # 检查U是否能将H对角化:

    >>> print(np.dot(np.dot(U.T.conj(), H), U) - np.diag(eps))

    >>> print(np.allclose(np.dot(np.dot(U.T.conj(), H), U), np.diag(eps)))

    >>>

    >>> # 验证U中的列是H的本征矢量:

    >>> np.allclose(np.dot(H, U[:, 3]), eps[3] * U[:, 3])

    >>> np.allclose(np.dot(H, U), eps * U)

    一维数组与二维数组相乘的规则:

    • 1维数组按照(1,N)数组来处理(行向量)

    • 左乘和右乘是相同的

    • 一个长度为m的行向量可以与一个nxm的矩阵相乘,产生的结果相当于将行向量复制n份作为n行,然后与矩阵的各元素分别相乘,结果仍为nxm阶的矩阵。

    • 一个长度为n的列向量可以与一个nxm的矩阵相乘,产生的结果相当于将列向量复制m份作为m列,然后与矩阵的各元素分别相乘,结果仍为nxm阶的矩阵。

    所以,对于下面的数组:

    >>>M = np.arange(5 * 6).reshape(5, 6) # 一个维数为(5, 6)的矩阵

    >>> v5 = np.arange(5) + 10             # 一个长度为5的向量

    >>> v51 = v5[:, None]                  # 一个长度为5的列向量

    >>> v6 = np.arange(6) - 12             # 一个长度为6的向量

    >>> v16 = v6[None, :]                  # 一个长度为5的行向量

    将满足下面的等式:

    v6 * M == v16 * M == M * v6 == M * v16 == M * v16.repeat(5, 0)

    v51 * M == M * v51 == M * v51.repeat(6, 1)

    同样的规则也适合于一维数组与二维数组的加减。


    评论 / 文明上网理性发言
    12条评论
    全部评论 / 我的评论
    最热 /  最新
    全部 3小时前 四川
    文字是人类用符号记录表达信息以传之久远的方式和工具。现代文字大多是记录语言的工具。人类往往先有口头的语言后产生书面文字,很多小语种,有语言但没有文字。文字的不同体现了国家和民族的书面表达的方式和思维不同。文字使人类进入有历史记录的文明社会。
    点赞12
    回复
    全部
    查看更多评论
    相关文章

    基础理论丨一文了解XPS(概念、定性定量分析、分析方法、谱线结构)

    2020-05-03

    手把手教你用ChemDraw 画化学结构式:基础篇

    2021-06-19

    晶体结构可视化软件 VESTA使用教程(下篇)

    2021-01-22

    【科研干货】电化学表征:循环伏安法详解(上)

    2019-10-25

    【科研干货】电化学表征:循环伏安法详解(下)

    2019-10-25

    Zeta电位的基本理论、测试方法和应用

    2020-08-24

    项目推荐/Project
    第一性原理-反应能垒

    第一性原理-反应能垒

    第一性原理-原子电荷

    第一性原理-原子电荷

    第一性原理-吸附能

    第一性原理-吸附能

    热门文章/popular

    基础理论丨一文了解XPS(概念、定性定量分析、分析方法、谱线结构)

    手把手教你用ChemDraw 画化学结构式:基础篇

    晶体结构可视化软件 VESTA使用教程(下篇)

    【科研干货】电化学表征:循环伏安法详解(上)

    电化学实验基础之电化学工作站篇 (二)三电极和两电极体系的搭建 和测试

    【科研干货】电化学表征:循环伏安法详解(下)

    微信扫码分享文章