Numpy教程(3)

作者: 孙宏志 | 来源:发表于2017-11-15 23:25 被阅读0次

    1. ndarray属性

    • dtype:一个用于说明数组元素数据类型的对象。
    • shape: 一个数组的各个维度大小的元组,即表示数组的形状
    • size:元素总个数,即shape中各个数的相乘
    • ndim: 一个数组的维度数量
    a = np.array([
        [1,2],
        [3,4],
        [5,6],
        [7,8]
    ])
    
    print("维度的数量",a.ndim)
    print("数组的形状",a.shape)
    print("数组的元素类型",a.dtype)
    print("数组的元素数量",a.size)
    
    image.png

    2. ndarray中元素数据类型

    • 创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出合适的数据类型,所以一般不需要显示给定数据类型。
    • 如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新的数组。


      image.png
    • 数值型dtype的命名方式为:一个类型名称(eg:int, float等),后接一个表示各个元素位长的数字

    比如Python的float数据类型(双精度浮点值),需要占用8个字节(86位),因此在Numpy中记为float64。

    • 每个数据类型都有一个类型代码,即简写方式。


      image.png
      image.png
      image.png
    image.png

    3. ndarray修改形状

    • 对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数/方法从而改变数组的形状。

    直接修改数组ndarray的shape的值,要求修改后乘积不变。
    直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。

    • 当指定一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
    1. 直接修改shape的值
      这种操作会直接修改原数组的形状。


      image.png
    2. 使用reshape方法修改形状
    • -1 表示当前维度的元素个数,自动计算,会根据数组元素的个数,和已经传入的数值,来判断-1位置的值应该填写的数字。
    • 这种操作不会修改原数组的形状,返回一个修改形状后的新的数组。


      image.png
    import numpy as np
    a = np.arange(1,25,2)    #生成一个从1开始到25结尾(不包含25),步长为2的一维数组。
    print(a)                 #打印生成的数组
    print(a.size)            #打印数组的大小
    
    b = a.reshape(2,6)       #通过reshape函数根据原数组元素内容生成一个新的(2,6)的二维数组
    print(b)                 #打印新生的数组
    print(b.size)            #打印新数组大小
    print(a)                 #打印原数组
    
    b[0][1] = 30             #修改新数组中第一行,第二列的数值为30
    print(b)                 #打印新数组
    print(a)                 #打印原数组,数值根据新数组的变化,一起改变了。
    
    print(a.reshape(3,-1))   #通过-1来确定列的数目
    
    print(a.reshape(-1,3))   #通过-1来确定行的数目
    
    a.shape                  #打印原数组的形状,确定原数组的形状没有变更
    
    
    image.png

    相关文章

      网友评论

        本文标题:Numpy教程(3)

        本文链接:https://www.haomeiwen.com/subject/omehvxtx.html