zoukankan      html  css  js  c++  java
  • NumPy常用操作

    NumPy 是一个 python 科学计算的核心库,它提供了高性能的多维数组类型和处理这些高维数组的工具。

    导入

    import numpy as np
    

    创建数组

    1960527.png

    a = np.array([1,2,3])
    a = np.array([(1.5,2,3),(4,5,6)],dtype=float)
    a = np.array([[(1.5,2,3),(4,5,6)],[(3,2,1),(4,5,6)]],dtype=float)
    

    初始化元素

    # 用 0 初始化数组
    np.zeros((3,4))
    
    # 用 1 初始化数组
    np.ones((2,3,4))
    
    # 生成元素全为 7 的数组
    np.full((2,2),7)
    
    # 生成单位矩阵
    np.eye(2)
    
    # 生成随机矩阵, 注意有两个 random
    np.random.random((2,2))
    
    # 生成 10 到 25 的数,步长为 5
    np.arrange(10,25,5)
    
    # 9 个数字均分 0 到 2
    np.linspace(0,2,9)
    

    了解数组特征

    # 显示数组的维度
    a.ndim
    
    # 显示数组各维度的长度
    a.shape
    
    # 显示数组长度(第一维)
    len(a)
    
    # 显示数组元素的个数
    a.size
    
    # 显示数组元素的数据类型
    a.dtype
    
    # 将数组元素转化为另一种类型
    a.astype(int)
    

    数组的数学操作

    算术操作

    # 矩阵乘法,除了这个函数,其他操作都是元素级的操作
    a.dot(b)
    

    数组比较

    # 元素级比较,生成的一个 shape 与原数组相同的 bool 数组
    a < 2
    
    # 元素级比较,数组的 shape 必须相同,结果形式同上
    a == b
    
    # 数组级比较,生成一个 bool 变量
    np.array_equal(a.b)
    

    聚合函数

    # 所有元素求和
    a.sum()
    
    # 求所有元素的最小值 ## axis=0 -> 以列为单位 axis=1 -> 以行为单位
    a.min()
    
    # 求所有元素的均值
    a.mean()
    
    # 求所有元素的中位数
    a.mediana()
    
    # 求数组的标准差
    np.std(a)
    

    复制数组

    # b=a.view(),b=np.copy(a)的效果也一样
    b = a.copy()
    

    数组排序

    # 排序数组,axis 也是可选参数
    a.sort()
    

    元素筛选

    取子集

    # 从 0 开始计数,先行后列
    a[1,2]或 a[1][2]
    

    切片

    # python 中的区间左闭右开,例如 [2:5] 就等于 2,3,4
    # 反转数组中的元素
    a[::-1]
    

    布尔索引

    # 选出 a 中小于 2 的元素
    a[a<2]
    

    数组操作

    转置数组

    # 也可以写成 np.transpose(a)
    a.T
    

    改变数组的形状

    # 将数组拉平
    a.ravel()
    
    # 有返回值,所谓有返回值,即不会对原始多维数组进行修改;
    # 改变数组形状, 但是不改变数据, 多余数据截断, 缺少数据用 0 补齐
    a.reshape(3,-1)
    
    # 无返回值,所谓无返回值,即会对原始多维数组进行修改;
    a.resize((3,2))			
    

    增加或减少元素

    # 将 a 拉平后,在尾部加上 b
    np.append(a,b)
    
    # 在将位置 1 开始的元素整体后移,插入新元素 5
    np.insert(a,1,5)
    
    # 删除位置 1 的元素
    np.delete(a,[1])
    

    拼接数组

    # 要拼接的那个维度长度必须相同,例如 axis=0,就是按行拼接,列数必须相同
    np.concatenate((a,b),axis=0)
    
    # 按一行行拼接
    np.vstack((a,b))
    np.r_[a,b]
    
    # 按一列列拼接
    np.hstack((a,b))
    np.c_[a,b]
    np.column_stack((a,d))
    

    分割数组

    # 将 a 按列分为 3 个相同的子数组(horizontally == column-wise)
    np.hsplit(a,3)
    
    # 将 a 按行分为 3 个相同的子数组(vertically == row-wise)
    np.vsplit(a,3)
    

    对于 axis 参数的理解

    如果我们将聚合函数作用在张量上,张量的维度一定会下降,而 axis 就决定了哪个维度将坍塌。
    axis=0 就是 row-wise,axis=1 就是 column-wise,axis=2 就是 depth-wise

  • 相关阅读:
    RHEL6 搭建 keepalived + lvs/DR 集群
    LeetCode 104. Maximum Depth of Binary Tree
    JAVA面试精选【Java基础第二部分】
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    为什么支付宝不怕你欠债?
  • 原文地址:https://www.cnblogs.com/JasonBUPT/p/11609910.html
Copyright © 2011-2022 走看看