• numpy 多维数组及数组操作


    NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!

    简单理解:

      2维是EXCEL表格里面的多行多列
      3维是EXCEL表格里面的多行多列+下面的sheet1、2、3
      4维是包括了同一个文件夹下不同名称的EXCEL表格
      5维是同一分区不同文件夹下不同名称的EXCEL表格
      6维是不同分区不同文件夹下不同名称的EXCEL表格 

    多维数组非常像列表,但通常它的元素类型是相同的,且都是数字,下面是一个简单的例子。

     声明数组:

    import numpy as np
    
     
    a = np.array([1, 2, 3, 4, 5, 6])
    
    print(f'一维数组: {a}')

     结果:

    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(f'二维数组: {a}')

    结果: 

    # 使用reshape方法反向生成多维数组 三维数组
    nlist_3 = np.array(range(24)).reshape((3,2,4))
    print(nlist_3)

    结果:

    #反向声明一个size为20个元素的四维数组
    nlist_4 = np.array(range(20)).reshape((1,2,5,2))
    print(nlist_4)

    结果:

     数组操作:

    print(f'维度(axes or dimensions)): {a.ndim}')

    结果:

    print(f'每个维度长度: {a.shape}')

    结果:

    print(f'数组长度: {a.size}')

     结果:

    print(f'数组类型: {type(a)}')

    结果:

    print(f'数组元素类型: {a.dtype}')

    结果:

    print(f'数组元素大小(bytes): {a.itemsize}')

    结果:

    print(f'数组元素: {a.data}')

    结果:

    #data属性,用来打印数据缓冲区 buffer
    print(a.data)
    结果:
    #使用浮点作为元素类型
    nlist_flaot = np.array([1.0,2.0,3.0])
    print(nlist_flaot.dtype)

    结果:

    #使用字符串作为元素类型
    nlist_string = np.array(['a','b','c'])
    print(nlist_string.dtype)

    结果:

    #自动生成使用ones方法,自动生成元素为1的多维数组
    nlist_ones = np.ones((4,4))
    print(nlist_ones)
    print(nlist_ones.dtype)

    结果:

    #使用zeros来生成元素为0的多维数组
    nlist_zeros = np.zeros((4,4))
    print(nlist_zeros)
    print(nlist_zeros.dtype)

     结果:

    #使用empty方法来生成随机多维数组 使用第二个参数指定数据类型 不指定为float64
    nlist_empty = np.empty([2,2],dtype=np.int)
    print(nlist_empty)
    print(nlist_empty.dtype)

    结果:

    #把普通list转换成数组
    x = [1,2,3]
    x = [[1,2,3],[4,5]]
    print(type(x))
    nlist = np.asarray(x)
    print(nlist)
    print(nlist.ndim)
    print(nlist.shape)
    print(type(nlist))

    结果:

    #把普通list转换成数组 二维数组
    x = [1,2,3]
    x = [[1,2,3],[4,5,6]]
    print(type(x))
    nlist = np.asarray(x)
    print(nlist)
    print(nlist.ndim)
    print(nlist.shape)
    print(type(nlist))

    结果:

    #frombuffer  通过字符串(buffer内存地址)切片来生成多维数组 b指定字节
    my_str = b'Hello Word'
    nlist_str = np.frombuffer(my_str,dtype='S1')
    print(nlist_str)

    结果:

    x = np.array([[1,2],[3,4]])
    print(x)
    
    #指定axis属性可以指定当前多维数组的维度  keepdims=True让其维度不变
    sum0 = np.sum(x,axis=0,keepdims=True)
    print(sum0)
    print('--------------')
    sum1 = np.sum(x,axis=1,keepdims=True)
    print(sum1)

    结果:

    #多维数组赋值
    x = np.array([1,2])
    y = x.copy()
    y[0] = 3
    print(x)

    结果:

    #维度级的运算
    a = np.array([[1,2],[3,4],[5,6]])
    b = np.array([[10,20],[30,40],[50,60]])
    
    #vstack方法
    suma = np.vstack((a,b))
    print(suma)
    
    #hstack方法
    sumb = np.hstack((a,b))
    print(sumb)

    结果:

    #多维数组调用
    nlist = np.array([[1,2],[3,4],[5,6]])
    print(nlist[0])
    #取元素4
    print(nlist[1][1])
    #第二种写法
    print(nlist[1,1])
    nlist[2,1] = 7
    print(nlist)

    结果:

    #删除方法 delete
    #删除nlist第二行
    print(np.delete(nlist,1,axis=0))
    print(np.delete(nlist,0,axis=1))

    结果:

    简单的计算及数组值交换操作

    import numpy as np

    q1 = np.zeros(shape=10)
    #给第五个元素赋值
    q1[4] = 1
    # print(q1)

    # 创建一个每一行都是0到4的5*5矩阵
    q2_list = [0,1,2,3,4]
    # 使用list乘法反推矩阵
    q2 = np.array(q2_list * 5).reshape(5,5)
    # print(q2)


    q3 = np.array([[1,2,3],[4,5,6],[7,8,9]])
    #使用所引交换元素
    # 换行
    q3 = q3[[2,1,0]]

    q3 = q3[[2][0]]
    print(q3)

    #原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
    q4 = np.array(range(101))
    #判断偶数
    q4 = q4[q4 % 2 == 0]
    print(q4)
    import numpy as np
    
    q1 = np.zeros(shape=10)
    #给第五个元素赋值
    q1[4] = 1
    # print(q1)
    
    # 创建一个每一行都是0到4的5*5矩阵
    q2_list = [0,1,2,3,4]
    # 使用list乘法反推矩阵
    q2 = np.array(q2_list * 5).reshape(5,5)
    # print(q2)
    
    
    q3 = np.array([[1,2,3],[4,5,6],[7,8,9]])
    #使用所引交换元素
    # 换行
    q3 = q3[[2,1,0]]print(q3)
    
    #原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
    q4 = np.array(range(101))
    #判断偶数
    q4 = q4[q4 % 2 == 0]
    print(q4)
  • 相关阅读:
    git-format-patch如何指定补丁生成的Subject格式
    openwrt生成的交叉编译器在哪里
    git如何在自动生成补丁时指定补丁名的起始编号
    hyper-v安装虚拟机ubuntu 18.04 64bit后无法使能增强模式怎么办
    Best regards缩写是什么
    git如何自动打补丁
    ubuntu 18.04 64bit build tensorflow report error:C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)
    linux安装yaml时出现Could not find a version that satisfies the requirement yaml (from versions: ) No matching distribution found for yaml
    String.format保留小数位数
    BigDecimal的保留位数和四舍五入的方法
  • 原文地址:https://www.cnblogs.com/Niuxingyu/p/10457038.html
Copyright © 2020-2023  润新知