• Numpy 的简单使用(一)


    一.环境

    本人使用的是Anaconda,免费的 Python 发行版,用于进行大规模数据处理、预测分析,和科学计算,致力于简化包的管理和部署。支持 Linux, Windows 和 Mac 系统。

    二.ndarray对象

    组成部分:

    一个指向数据(内存或内存映射文件中的一块数据)的指针。

    数据类型或 dtype,描述在数组中的固定大小值的格子。

    一个表示数组形状(shape)的元组,表示各维度大小的元组。

    一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

    三.numpy.array()函数

    格式:numpy.array(object,dtype,copy,order,subok,ndmin)

    object数组或嵌套的数列
    dtype数组元素的数据类型,可选
    copy对象是否需要复制,可选
    order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
    subok默认返回一个与基类类型一致的数组
    ndmin指定生成数组的最小维度

    四.array()函数代码举例

    1. import numpy as np
    2. a = np.array([1,2,3])#一维数组
    3. print(a)
    4. b = np.array([[1,2],[3,4]])#二维数组
    5. print(b)

    import numpy as np 或import numpy 

    这两种都需要在函数前加.

    from numpy import *

    不需要添加前缀

    相同:两者都是导入numpy库的函数,变量,对象等

    1. import numpy as np
    2. a = np.array([[1,2,3],[4,5,6],[1,2,3]],ndmin = 4)#最小维度
    3. print(a)
    4. [[[[1 2 3]
    5. [4 5 6]
    6. [1 2 3]]]]

    dtype的值可以是很多:

    bool_布尔型数据类型(True 或者 False)
    int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
    intc与 C 的 int 类型一样,一般是 int32 或 int 64
    intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
    int8字节(-128 to 127)
    int16整数(-32768 to 32767)
    int32整数(-2147483648 to 2147483647)
    int64整数(-9223372036854775808 to 9223372036854775807)
    uint8无符号整数(0 to 255)
    uint16无符号整数(0 to 65535)
    uint32无符号整数(0 to 4294967295)
    uint64无符号整数(0 to 18446744073709551615)
    float_float64 类型的简写
    float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
    float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
    float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
    complex_complex128 类型的简写,即 128 位复数
    complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
    complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

    五.numpy.dtype()函数

    格式:numpy.dtype(object,align,copy)

    dtype()代码举例

    1. import numpy as np
    2. a = np.dtype(np.int64)
    3. print(a)
    4. int64

    创建数据类型代码举例

    1. import numpy as np
    2. dt = np.dtype([('age',np.int8)])
    3. a = np.array([(10,),(20,),(30,)])
    4. print(a)
    5. a = np.array([(10),(20),(30)])
    6. print(a)
    7. a = np.array([(10,),(20),(30)],dtype = dt)
    8. print(a)
    9. [[10]
    10. [20]
    11. [30]]
    12. [10 20 30]
    13. [(10,) (20,) (30,)]

    六.array的属性

    也就是用一些函数求一些数组自身的特征,比如数组的维数,数组的大小。

    ndim()用于求数组维数

    1. import numpy as np
    2. a = np.arange(24)
    3. print(a.ndim)
    4. a = a.reshape(2,4,3)
    5. print(a.ndim)
    6. 1
    7. 3

    shape()函数用于求数组的行列数或改变行列数

    1. import numpy as np
    2. a = np.array([[2,3],[4,5]])
    3. print(a.shape)
    4. a.shape=(1,4)
    5. print(a)
    6. print(a.shape)
    7. (2, 2)
    8. [[2 3 4 5]]
    9. (1, 4)

    reshape()也可用于调整数组行列数

    itemsize()可以返回元素大小

    1. import numpy as np
    2. a = np.array([1,2,3],dtype =float)
    3. print(a.itemsize)
    4. 8

    flags()返回内存使用情况

    1. import numpy as np
    2. a = np.array([1,2,3],dtype =float)
    3. print(a.flags)
    4. C_CONTIGUOUS : True
    5. F_CONTIGUOUS : True
    6. OWNDATA : True
    7. WRITEABLE : True
    8. ALIGNED : True
    9. WRITEBACKIFCOPY : False
    10. UPDATEIFCOPY : False
    属性描述
    C_CONTIGUOUS (C)数据是在一个单一的C风格的连续段中
    F_CONTIGUOUS (F)数据是在一个单一的Fortran风格的连续段中
    OWNDATA (O)数组拥有它所使用的内存或从另一个对象中借用它
    WRITEABLE (W)数据区域可以被写入,将该值设置为 False,则数据为只读
    ALIGNED (A)数据和所有元素都适当地对齐到硬件上
    UPDATEIFCOPY (U)这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新

    含义如上

    七.快速创建数组的函数

    empty()方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

    格式如下:numpy.empty(shape, dtype = float, order = 'C')

    1. import numpy as np
    2. a = np.empty([2,3],dtype = float)
    3. print(a)
    4. [[0. 0. 0.]
    5. [0. 0. 0.]]

    zeros()全零矩阵

    1. import numpy as np
    2. a = np.zeros((2,3),dtype = int)
    3. print(a)
    4. b = np.zeros(5)
    5. print(b)
    6. [[0 0 0]
    7. [0 0 0]]
    8. [0. 0. 0. 0. 0.]

    ones()全1矩阵

    1. import numpy as np
    2. a = np.ones((2,3),dtype = int)
    3. print(a)
    4. b = np.ones(5)
    5. print(b)
    6. [[1 1 1]
    7. [1 1 1]]
    8. [1. 1. 1. 1. 1.]

    八.从已有数组创建数组

    asarray()函数可以将列表、元组、等转化为矩阵数组

    1. import numpy as np
    2. a = [(1,2,3),(2,3,4)]
    3. s = np.asarray(a)
    4. print(s)
    5. [[1 2 3]
    6. [2 3 4]]

    frombuffer实现动态数组

    格式:numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

    参数描述
    buffer可以是任意对象,会以流的形式读入。
    dtype返回数组的数据类型,可选
    count读取的数据数量,默认为-1,读取所有数据。
    offset读取的起始位置,默认为0。
    1. import numpy as np
    2. a = b'hello cat'
    3. s = np.frombuffer(a,dtype='S1')
    4. print(s)
    5. [b'h' b'e' b'l' b'l' b'o' b' ' b'c' b'a' b't']

       至于为什么要加b,希望评论区能给一个好的解释。

    fromiter()方法从可迭代对象中建立 ndarray 对象,返回一维数组

    格式numpy.fromiter(iterable, dtype, count=-1)

    1. import numpy as np
    2. list = range(5)
    3. it = iter(list)
    4. x = np.fromiter(it,dtype = int)
    5. print(x)
    6. [0 1 2 3 4]

  • 相关阅读:
    duilib 入门基础十二 样式类
    thymeleaf中的日期格式转化
    Python装饰器使用
    MobileNetv1论文详解
    WebStorm安装教程
    【人工智能数学基础】几何解释——最小二乘法
    文件、异常、模块
    Kubesphere之多租户体系
    一、基础知识(1)-范数、导数
    留意差距:弥合网络安全基础设施的挑战
  • 原文地址:https://blog.csdn.net/qq_52630607/article/details/126905110