zoukankan      html  css  js  c++  java
  • PYTHON-numpy.array的大坑 、numpy中的数据类型

    1.大坑介绍:

      一定要在生成数组(array)时候声明数组所存储变量的变量类型;不然,真的,这个错误几天都找不出来!太隐蔽了!

    官网已经给你悄悄暗示了些什么:

       总的来说就是自己基础知识不扎实导致的,忽视了一点就是:

    python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。

    2.大坑代码:

    >>> a = [0,3,2]
    >>> b = [0,8,2]
    >>> c = np.array(list(zip(a,b)))
    >>> c = np.mean([[0,0],[1,1]])
    >>> c
    0.5
    >>> c = np.mean([[0,0],[1,1]],axis = 0)
    >>> c
    array([0.5, 0.5])
    #看到这的小伙伴,没问题啊?怎么回事,小老弟!
    
    #下面可要看仔细了
    >>> c = np.array(list(zip(a,b)))
    >>> c[0] = np.mean([[0,0],[1,1]],axis = 0)
    >>> c[0]
    array([0, 0])
    
    #咋回事呢?求个列方向的平均值怎么成0了,不应该是array[0.5,0.5]么

    问题就在这,我之前在“灰色行”给c赋予了一个数组的属性,其开始存储的是

    array([[0, 0],
    [3, 8],
    [2, 2]])

    这样一个数据,由于其中元素都是int的,所以系统就认为你要的这个数组就是int的,但是最后呢?你要其存储float类型的,作为系统的“好心”,肯定给你转换为int。却恰恰是这个“好心”导致程序出错。

    方法:加入数据类型

    >>> c = np.array(list(zip(a,b)),dtype = np.float32)
    >>> c[0] = np.mean([[0,0],[1,1]],axis = 0)
    >>> c[0]
    array([0.5, 0.5], dtype=float32)#这样就对了嘛!

    3.numpy中的数据类型:

    数据类型
    描述
    bool_
    布尔(True或False),存储为一个字节
    int_
    默认整数类型(与Clong相同;通常是int64或int32)
    INTC
    与Cint(通常为int32或int64)相同
    INTP
    用于索引的整数(与Cssize_t相同;通常是int32或int64)
    INT8
    字节(-128至127)
    INT16
    整数(-32768至32767)
    INT32
    整数(-2147483648至2147483647)
    Int64的
    整数(-9223372036854775808至9223372036854775807)
    UINT8
    无符号整数(0到255)
    UINT16
    无符号整数(0到65535)
    UINT32
    无符号整数(0到4294967295)
    UINT64
    无符号整数(0到18446744073709551615)
    float_
    float64的简写。
    float16
    半精度浮点:符号位,5位指数,10位尾数
    FLOAT32
    单精度浮点数:符号位,8位指数,23位尾数
    float64
    双精度浮点:符号位,11位指数,52位尾数
    complex_
    complex128的简写。
    complex64
    复数,由两个32位浮点数(实部和虚部)
    complex128
    复数,由两个64位浮点数(实部和虚部)

    4.参考:

    https://www.numpy.org.cn/(官网链接)

    https://www.cnblogs.com/hackpig/p/8183470.html(list与array的区别)

    https://www.cnblogs.com/chenhuabin/p/11412818.html(numpy中的数据类型)  <-------------------------强烈推荐学矩阵的小伙伴们看看

  • 相关阅读:
    Java中Runnable和Thread的区别
    Callable,Runnable比较及用法
    如何实现视差滚动效果的网页?
    【175】Easy CHM的使用
    【174】C#添加非默认字体
    【173】双显示器随便切换位置
    【172】outlook邮箱设置
    【171】IDL读取HDF文件
    怎样实现二级联动
    Java 23种设计模式详尽分析与实例解析之二--结构型模式
  • 原文地址:https://www.cnblogs.com/xiao-yu-/p/12725816.html
Copyright © 2011-2022 走看看