zoukankan      html  css  js  c++  java
  • 二、Numpy基础:数组修改

    一、数组属性

    • 维度:.ndim,返回当前数组维度
    • 类型:.dtype,返回数组内元素的数据类型,注:numpy定义的数组数据类型是统一,不能多类型混合
    • 形状:.shape,返回数据形状,数组每层中的元素个数
    • 元素总数:.size,返回数组中元素总个数
    • 字节大小:.itemsize,返回数组中每个元素的字节大小。
    import numpy as np
    a=np.full((2,5,4),10)
    print("数组a:",a)
    print("数组a中元素总数:",a.size)
    print("数组a的形状:",a.shape)
    print("数组a中的元素类型:",a.dtype)
    print("数组a的维度:",a.ndim)
    print("数组a中的元素字节大小:",a.itemsize)
    >>>
    数组a: [[[10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]]
    
     [[10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]
      [10 10 10 10]]]
    数组a中元素总数: 40
    数组a的形状: (2, 5, 4)
    数组a中的元素类型: int32
    数组a的维度: 3
    数组a中的元素字节大小: 4
    

    二、数据类型

    • 不指定的情况下,numpy会自动推断出适合的数据类型,所以一般不需要显示给定数据类型。
    • 数值型dtype的命名方式为:一个类型名称(eg:int、float等),后接一个表示各个元素位长的数字
    • 如Python的float数据类型(双精度浮点值),需要占用8个字节(64位),因此在NumPy中记为float64
    • 每个数据类型都有一个类型代码,即简写方式
    数据类型 简写 说明 字节 范围
    整型 int_   默认整形    
    intc   等价于long的整形    
    int8 i1 字节整形 1 [-128,127]
    int16 i2 整形 2 [-32768,32767]
    int32 i3 整形 4 [-2^31, 2^31-1]
    int64 i4 整形 6 [-2^63, 2^63-1]
    无符号
    整型
    uint8 u1 无符号整形 1 [0,255]
    uint16 u2 无符号整形 2 [0,65535]
    uint32 u3 无符号整形 1 [0, 2^32-1]
    uint64 u4 无符号整形 1 [0,2^64-1]
    布尔 bool_   布尔值 1 True或者False
    浮点型 float_   float64简写形式 8  
    float16 f2 半精度浮点型 2 1符号位+5位指数+10位的小数部分
    float32 f4或者f 单精度浮点型 4 1符号位+8位指数+23位的小数部分
    float64 f8或者d 双精度浮点型 8 1符号位+11位指数+52位的小数部分
    复数 complex_ c16 complex128的简写形式    
    complex64 c8 复数,由两个32位的浮点数来表示 32  
    complex128 c16 复数,由两个64位的浮点数来表示 64  
    对象 object O Python对象类型    
    字符串 String_ S 固定长度的字符串类型(每个字符1个字节)    
    Unicode_ U 固定长度的unicode类型的字符串    

     

     

     

    三、数组修改(属性)

    • 形状修改:.reshape()、.T
    • 维度修改:.reshape()
    • 类型修改:.astype()

    3.1、reshape()方法:修改数组形状与维度

    • 直接修改数组ndarray的shape值,要求修改后乘积不变。
    • 直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。
    • 当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
    import numpy as np
    a=np.arange(30)
    print("原数组(一维):",a)
    b=a.reshape(2,3,5)
    print("新数组(三维):",b)
    b[1][2][2]=666
    print("修改b中的数值会影响到a:",a)
    print("对b使用降维打击:",b.reshape(10,-1))
    >>>
    原数组(一维): 
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29]
    新数组(三维):
     [[[ 0  1  2  3  4]
      [ 5  6  7  8  9]
      [10 11 12 13 14]]
    
     [[15 16 17 18 19]
      [20 21 22 23 24]
      [25 26 27 28 29]]]
    修改b中的数值会影响到a:
     [  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17
      18  19  20  21  22  23  24  25  26 666  28  29]
    对b使用降维打击: 
    [[  0   1   2]
     [  3   4   5]
     [  6   7   8]
     [  9  10  11]
     [ 12  13  14]
     [ 15  16  17]
     [ 18  19  20]
     [ 21  22  23]
     [ 24  25  26]
     [666  28  29]]
    

    3.2、T方法:行列转置

    • 使用T方法以后,可以对数组进行行列转置。
    import numpy as np
    a=np.random.randint(1,10,size=(2,3,4))
    b=a.T
    print(b.shape)
    >>>
    (4, 3, 2)
    

    3.2、astype()方法:修改元素类型

    • 如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。
    import numpy as np
    a=np.arange(1,5)
    print("原数组:{0},其数据类型为:{1}".format(a,a.dtype))
    b=a.astype(float)
    print("新数组:{0},其数据类型为:{1}".format(b,b.dtype))
    >>>
    原数组:[1 2 3 4],其数据类型为:int32
    新数组:[1. 2. 3. 4.],其数据类型为:float64
    

     

  • 相关阅读:
    c#设计模式(1)——单例模式
    Javascript变量
    悲观锁和乐观锁
    NestJs 环境 配置
    分布式查询
    Git hub 忽略 文件 、文件夹
    ES6 基础 二
    ES6 基础 一
    invalid credential, access_token is invalid or not latest hint(微信 上传图片返回 error)
    nodejs 入门一(环境及插件)
  • 原文地址:https://www.cnblogs.com/hezhefly/p/8279209.html
Copyright © 2011-2022 走看看