• python>>numpy包


    章节内容

            什么是NumPy模块和NumPy数组

            创建数组

            基本数据类型

            数据可视化

            索引和切片

            副本和视图

    目录

    什么是NumPy模块和NumPy数组?

    创建数组

    基本数据类型

    数据可视化

    索引和切片

    副本和视图


    什么是NumPy模块和NumPy数组

    NumPy数组

    python对象
    • 高级数字对象:整数、浮点数
    • 容器:列表,字典,元组
    NumPy提供:
    • 继承了python中的列表(List)容器中的优良特性
    • 丰富的函数,便于提高计算效率,提高代码简洁新
    • 专业为科学计算而设计
    • 也成为面向数组,矩阵(多维数组)的计算

    计算效率大幅度提高

    每个循环 178 μs ± 3.98 μs(7 次运行,每次 10,000 次循环)。

    NumPy 参考文档

    •  一个外国的文档:NumPy Documentation
    • 怎么查询一个numpy中的关键词

    • 交互式的帮助

     创建数组

    利用arange手动构建数组

     

    利用linspace创建数组

     

     用特殊的方法创建特殊数组

    • 利用zeros(n)创建一个n个元素的数组

    • 利用zeros((n,m))创建多维数组

    • 利用eye((n,m))创建多维数组

    • 利用diag((n,m))创建多维数组(方阵)

     基本数据类型

    复数类型:
     d = np.array([1+2j, 3+4j, 5+6*1j])
     d.dtypedtype('complex128')
    布尔数据类型:
    e = np.array([True, False, False, True])
    e.dtypedtype('bool')
    字符串类型: 
    f = np.array(['Bonjour', 'Hello', 'Hallo'])
    f.dtype # <--- strings containing max. 7 letters dtype('S7')
    更多:
    • int32
    • int64
    • uint32
    • uint64

    数据可视化

    • 导入包

    import matplotlib.pyplot as plt
    • 数据的输入

    1. x = np.linspace(0,3,20)
    2. y = np.linspace(0,8,20)
    • 绘制图形
    plt.plot(x,y)

    •  一个有趣的实验
    1. image = np.random.rand(30,30)
    2. plt.imshow(image,plt.cm.hot)

     索引和切片

    创建一个数组之后,因为numpy几乎继承了python中的list容器中所有特性,其切片和list容器的切片操作类似,这里就不展开了,直接用图来展示。

     副本和视图

    我们创建一个切片之后,得到的numpy数组和原来的数组是共享同一块内存空间,所以修改任意一个numpy数组中的数据,另外的一个numpy数组也会被修改。

    • 调用np.map_share_memory(a,b),可以查看两个数组是否共用一个内存空间
    1. a = np.arange(10)
    2. >>> aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    3. >>> b = a[::2]
    4. >>> b
    5. array([0, 2, 4, 6, 8])
    6. >>> np.may_share_memory(a, b)
    7. True
    • 如果不想共享同一块内存空间
    1. a = np.arange(10)
    2. >>> c = a[::2].copy()
    3. c[0] = 0
    4. >>> np.may_share_memory(a, c)
    5. False

        

     

  • 相关阅读:
    某60区块链安全之重入漏洞实战记录
    STM32的IIC
    Taro3的编译配置
    【附源码】计算机毕业设计SSM网络调查问卷系统
    SpringBoot 日志
    人工智能与数据挖掘的关系
    Rust更适合经验较少的程序员?
    Istio 自动注入 sidecar 失败导致无法访问webhook服务
    css 设置border边框颜色渐变效果
    从头开发一个RISC-V的操作系统(四)嵌入式开发介绍
  • 原文地址:https://blog.csdn.net/weixin_54201782/article/details/128061676